<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.stridewiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ivailop</id>
	<title>STRIDE Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.stridewiki.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ivailop"/>
	<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Special:Contributions/Ivailop"/>
	<updated>2026-04-27T10:19:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14731</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14731"/>
		<updated>2024-08-31T02:16:53Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.04x =&lt;br /&gt;
The code name for this release is &#039;&#039;Tamarack&#039;&#039;. Released on Mar 8, 2023. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== System Requirements ===&lt;br /&gt;
The prebuild binaries require either:&lt;br /&gt;
* Linux (x86_64), glibc 2.17 or later&lt;br /&gt;
* Windows (x86_64) 10 or later&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* In [[STRIDE Runtime]], fixed memory overrun while restoring IN pointers&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl 64-bit versions 5.28 and 5.30. &lt;br /&gt;
* Support for Perl 64-bit versions 5.24 and older is not provided by default but is available on demand. &lt;br /&gt;
* Support for Perl 32-bit has been dropped.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.04x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.04&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.04a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;char16_t/char32_t&amp;quot; built-in types.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;default/delete&amp;quot; class methods.&lt;br /&gt;
* Added support for Perl 64-bit versions 5.32 and 5.34. &lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile Clang extensions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrectly handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;inline namespace&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;nodiscard&amp;quot; attribute in Microsoft mode.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile forward-declared &amp;quot;enum&amp;quot; in Microsoft mode.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to handle GCC and VC &#039;preinclude&#039; alternatives.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile variation of GCC `enum __attrbute__((..))`.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14730</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14730"/>
		<updated>2023-03-08T23:03:54Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Perl Installation (Optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86_64)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-x86_64-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;===&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86_64 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only versions 5.18.x, 5.20.x, 5.22.x, 5.24.x, 5.26.x, 5.28.x and 5.30.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use one of the &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distributions from [http://strawberryperl.com/releases.html Strawberry Perl] (or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]).&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
For Strawberry Perl, simplest method for installing packages is via the &amp;lt;tt&amp;gt;cpanm.bat&amp;lt;/tt&amp;gt; utility script. To install the latest stable version of PACKAGE_NAME (the package to install) simply execute:&lt;br /&gt;
&lt;br /&gt;
 cpanm.bat PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
For ActiveState Perl, you can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version (or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]).&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14729</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14729"/>
		<updated>2023-03-08T23:01:09Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* System Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.04x =&lt;br /&gt;
The code name for this release is &#039;&#039;Tamarack&#039;&#039;. Released on Mar 8, 2023. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== System Requirements ===&lt;br /&gt;
The prebuild binaries require either:&lt;br /&gt;
* Linux (x86_64), glibc 2.17 or later&lt;br /&gt;
* Windows (x86_64) 10 or later&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* In [[STRIDE Runtime]], fixed memory overrun while restoring IN pointers&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl 64-bit versions 5.28 and 5.30. &lt;br /&gt;
* Support for Perl 64-bit versions 5.24 and older is not provided by default but is available on demand. &lt;br /&gt;
* Support for Perl 32-bit has been dropped.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.04x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.04&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile Clang extensions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrectly handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;inline namespace&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;nodiscard&amp;quot; attribute in Microsoft mode.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile forward-declared &amp;quot;enum&amp;quot; in Microsoft mode.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to handle GCC and VC &#039;preinclude&#039; alternatives.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile variation of GCC `enum __attrbute__((..))`.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14728</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14728"/>
		<updated>2023-03-08T21:29:03Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.04x =&lt;br /&gt;
The code name for this release is &#039;&#039;Tamarack&#039;&#039;. Released on Mar 8, 2023. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== System Requirements ===&lt;br /&gt;
The prebuild binaries require either:&lt;br /&gt;
* Linux 64-bit, glibc 2.17 or later&lt;br /&gt;
* Windows 10 64-bit or later&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* In [[STRIDE Runtime]], fixed memory overrun while restoring IN pointers&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl 64-bit versions 5.28 and 5.30. &lt;br /&gt;
* Support for Perl 64-bit versions 5.24 and older is not provided by default but is available on demand. &lt;br /&gt;
* Support for Perl 32-bit has been dropped.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.04x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.04&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile Clang extensions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrectly handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;inline namespace&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;nodiscard&amp;quot; attribute in Microsoft mode.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile forward-declared &amp;quot;enum&amp;quot; in Microsoft mode.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to handle GCC and VC &#039;preinclude&#039; alternatives.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile variation of GCC `enum __attrbute__((..))`.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Stride_Overview&amp;diff=14727</id>
		<title>Stride Overview</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Stride_Overview&amp;diff=14727"/>
		<updated>2021-05-21T23:40:03Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Stride™&#039;&#039;&#039; is an [http://en.wikipedia.org/wiki/XUnit xUnit-style] test framework for C/C++ software comprised of an external test &#039;&#039;Runner&#039;&#039;, &#039;&#039;Runtime&#039;&#039; source code library, and a set of &#039;&#039;Build Tools&#039;&#039;. It was designed with a specific focus on enabling tests to be executed on a device using a fully functional build.&amp;lt;ref&amp;gt;Fully functional build means that the software works the same as before instrumentation, but now has built-in tests that can be invoked on-demand by the test &#039;&#039;Runner&#039;&#039;.&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Stride&#039;s unique host-target architecture allows easier and better On-Target/Device White-box testing. Software builds automatically become more testable; facilitating deeper code coverage opportunities.&amp;lt;ref&amp;gt;For more details refer to our [[Frequently Asked Questions About STRIDE | FAQ]].&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stride is also fully integrated with [http://www.testspace.com Testspace] for test content management. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:Stride Overview.jpg | 600px | center | Stride block diagram]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Runner ====&lt;br /&gt;
Stride includes a lightweight [[Stride_Runner | &#039;&#039;&#039;Runner&#039;&#039;&#039;]] application that is a host-based command-line utility for interactive and automated test execution. It also integrates seamlessly with [http://www.testspace.com Testspace] for &#039;&#039;test content management&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Runtime====&lt;br /&gt;
Stride also contains a [[STRIDE Runtime | &#039;&#039;&#039;Runtime&#039;&#039;&#039;]] software source package. The Runtime enables &#039;&#039;testability&#039;&#039; by integrating with the software under test along with supporting connectivity with the host system, all with minimal impact on performance or code size. The software is agnostic to the RTOS, CPU, and host/device I/O transport. It supports simple &#039;&#039;single-process&#039;&#039; devices as well as &#039;&#039;multi-process&#039;&#039; and &#039;&#039;multi-threaded&#039;&#039; environments. It can be used with software running in either user or kernel mode, including drivers. Typically the Runtime is configured as a background thread and only executes when running tests.&lt;br /&gt;
&lt;br /&gt;
==== Build Tools ====&lt;br /&gt;
[[image:STRIDE 4.2 Framework-b.jpg |right|250px | border]]&lt;br /&gt;
&lt;br /&gt;
The Stride [[STRIDE_Build_Tools | &#039;&#039;&#039;Build Tools&#039;&#039;&#039;]] are a set of command-line utilities that integrate with your target software build process. They preprocess standard C/C++ header files that contain Stride test declarations to auto-generate C/C++ source code comprising a custom [[Intercept_Module | &#039;&#039;&#039;Intercept Module&#039;&#039;&#039;]]. The intercept module code is then included in your target software build along with the Stride Runtime to provide &#039;&#039;fixturing&#039;&#039; and &#039;&#039;harnessing&#039;&#039; test logic as part of your build image.&lt;br /&gt;
&lt;br /&gt;
== Cross Platform ==&lt;br /&gt;
Stride works on virtually any target platform. Stride&#039;s cross-platform framework facilitates a &#039;&#039;unified testing approach&#039;&#039; for all team members, enabling organizations to standardize on a test workflow that is independent of the target platform being used or what branch of software is being changed.&lt;br /&gt;
&lt;br /&gt;
==== Runtime Written in Standard C ====&lt;br /&gt;
The Stride Runtime is written in standard ANSI C on top of a simple customizable [[Platform_Abstraction_Layer | &#039;&#039;&#039;platform abstraction layer&#039;&#039;&#039;]] that enables it to work across platforms. It can be configured for a single process multi-threading environment or multiple process environments (i.e. Android, Linux, Windows, Embedded RTOS, etc.). It is delivered as source code to be included in the application&#039;s build system. The transport between the host and target is configurable and supports Serial and TCP/IP by default. Custom transports are also available.&lt;br /&gt;
&lt;br /&gt;
The runtime has been tailored specifically for embedded applications; overhead is minimal. It consumes very little memory for table and control block storage. Resource usage is configurable and can be adjusted to conform to any limitations of the target platform.&lt;br /&gt;
&lt;br /&gt;
==== Integrates With Your Existing Build System ====&lt;br /&gt;
Stride auto-generates &#039;&#039;intercept module&#039;&#039; harnessing and remoting functionality as C or C++ source code during the make process, removing any dependencies on specific compilers and / or processors.&lt;br /&gt;
&lt;br /&gt;
==== Supports Off-Target Testing ====&lt;br /&gt;
Testing can also be simulated using a standard desktop computer (Windows, Linux, or FreeBSD) with no changes to test code. The Stride &#039;&#039;SDKs&#039;&#039; allow for a seamless transition between the real target and an Off-Target host environment.&lt;br /&gt;
&lt;br /&gt;
== Rich set of Assertions ==&lt;br /&gt;
Test cases are typically constructed leveraging a large set of available assertion macros. When failures occur, these macros automatically set test status and provide details to the test report such as file name, line number, and condition causing the failure. Stride provides a large set of these macros to validate a wide variety of scenarios. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source  lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mytest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void MyTest::CheckFoo() {&lt;br /&gt;
    ..  &lt;br /&gt;
    srEXPECT_EQ(foo(2 + 2), 4); &lt;br /&gt;
}&lt;br /&gt;
void MyTest::CheckBoo() {&lt;br /&gt;
    ..&lt;br /&gt;
    srASSERT_GT(boo(3 * 3), 7); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensive Parameter Support ==&lt;br /&gt;
&lt;br /&gt;
Parameterized testing is key to reducing test code duplication. Constructor arguments, name-value collection, and host file remoting are all supported. Stride provides an easy way for passing and accessing these types of parameters, allowing customization of test behavior at runtime.&lt;br /&gt;
&lt;br /&gt;
Create an INI-type of file (i.e. &#039;&#039;myinput.ini&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;ini&amp;quot;&amp;gt;&lt;br /&gt;
Loopsize   = 10&lt;br /&gt;
InputFile  = ${MYPATH}/datacontent.bin&lt;br /&gt;
Toogle     = On&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pass the name-value collection using the Stride Runner&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$ stride .. --run=&amp;quot;MyTest(/path/to/myinput.ini)&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now simply access your input within test logic using built-in services&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  // .. doing stuff ..&lt;br /&gt;
  GetParam(&amp;quot;InputFile&amp;quot;, buffer, size);&lt;br /&gt;
  //.. using parameters for test logic&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Doubles &amp;amp; Test Points == &lt;br /&gt;
Stride offers advanced testing techniques that enable deeper and more effective testing with less effort.&lt;br /&gt;
&lt;br /&gt;
==== Test Doubles ====&lt;br /&gt;
For more advanced testing scenarios, dependencies can be &#039;&#039;&#039;doubled&#039;&#039;&#039;. This feature provides a means for intercepting C/C++ global functions on the target and substituting a stub, fake, or mock. The substitution is all controllable via the runtime, allowing the software to continue executing normally when not running a test.&lt;br /&gt;
&lt;br /&gt;
For example something like the following could be useful:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void MySuite::test1()&lt;br /&gt;
{&lt;br /&gt;
  // inserting my own version of malloc()&lt;br /&gt;
  srDOUBLE_SET(malloc, my_malloc_stub);&lt;br /&gt;
&lt;br /&gt;
  // calling a routine that uses malloc(). checking handled null correctly&lt;br /&gt;
  ret_code = FuncThatUsesMalloc(42);&lt;br /&gt;
  srEXPECT_EQ(ret_code, -1)&lt;br /&gt;
&lt;br /&gt;
  // restoring the real malloc()&lt;br /&gt;
  srDOUBLE_RESET(malloc)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Test Points ====&lt;br /&gt;
Stride leverages &#039;&#039;source instrumentation&#039;&#039; to provide an additional validation technique called &#039;&#039;&#039;Expectation Testing&#039;&#039;&#039; that can be applied to the executing software application. The execution sequencing of the code, along with state data, can be automatically validated based on &#039;&#039;what is expected&#039;&#039;. This validation technique does not focus on calling functions/methods but rather verifies &#039;&#039;code execution sequencing&#039;&#039;. This can span threads, process boundaries, and even multiple targets, as the application(s) is running. Leveraging simple macros -- called &#039;&#039;&#039;Test Points&#039;&#039;&#039; -- developers strategically instrument the source under test.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* a test point with formatted string payload */&lt;br /&gt;
srTEST_POINT_STR(&amp;quot;IMPORTANT&amp;quot;, &amp;quot;important date= %d&amp;quot;, myVar);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The test validation is done without impacting the application&#039;s performance (the on-target test code is executed in a background thread and scripts are executed on the host machine). When failures do occur, context is provided with the file name and associated line number of the failed expectations. This type of validation can be applied to a wide-range of testing scenarios:&lt;br /&gt;
* State Machines&lt;br /&gt;
* Data flow through system components&lt;br /&gt;
* Sequencing between threads&lt;br /&gt;
* Drivers that don&#039;t return values&lt;br /&gt;
* and much more ...&lt;br /&gt;
&lt;br /&gt;
The following is a snippet of what the test code might look like&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
srTestPointExpect_t expected[]={&lt;br /&gt;
  {&amp;quot;IMPORTANT&amp;quot;}, myCheckData,&lt;br /&gt;
  {&amp;quot;ANOTHER_TP&amp;quot;},&lt;br /&gt;
  {0}};&lt;br /&gt;
&lt;br /&gt;
// setup the expections&lt;br /&gt;
srTestPointSetup(expected, ..);&lt;br /&gt;
&lt;br /&gt;
// start the operations&lt;br /&gt;
&lt;br /&gt;
srTestPointWait(handle, 1000);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Implementation ==&lt;br /&gt;
Stride based tests are integrated with the existing build system enabling your software to be both fully &#039;&#039;functional&#039;&#039; and &#039;&#039;testable&#039;&#039; at the same time. The &#039;&#039;test logic&#039;&#039; is separated from the application source code and is &#039;&#039;&#039;not&#039;&#039;&#039; executed unless invoked via the Stride Runner. Any &#039;&#039;source instrumentation&#039;&#039; is only active when executing tests. The impact of built-in testability to the software application is nominal.&lt;br /&gt;
&lt;br /&gt;
The test validation can be implemented in both &#039;&#039;C/C++&#039;&#039; on the target and &#039;&#039;Perl&#039;&#039; on the host. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C/C++ Test Example&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source  lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
class MyTest {&lt;br /&gt;
public: &lt;br /&gt;
    void CheckFoo();&lt;br /&gt;
    void CheckBoo();&lt;br /&gt;
};&lt;br /&gt;
#pragma scl_test_class(MyTest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source  lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;mytest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void MyTest::CheckFoo() {&lt;br /&gt;
    ..  &lt;br /&gt;
    srEXPECT_EQ(foo(2 + 2), 4); &lt;br /&gt;
}&lt;br /&gt;
void MyTest::CheckBoo() {&lt;br /&gt;
    ..&lt;br /&gt;
    srASSERT_GT(boo(3 * 3), 7); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Perl Script Example&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
package MyTests;&lt;br /&gt;
use base qw(STRIDE::Test);&lt;br /&gt;
use STRIDE::Test;&lt;br /&gt;
&lt;br /&gt;
sub CheckFoo : Test&lt;br /&gt;
{&lt;br /&gt;
    EXPECT_EQ(Remote-&amp;gt;foo(2 + 2), 4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub CheckBoo : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_GT(Remote-&amp;gt;boo(3 * 3), 7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Works with Testspace ==&lt;br /&gt;
&lt;br /&gt;
Stride has been designed to fully leverage Testspace features such as test design, execution control, and test analysis. With Testspace, test content and status remain better organized and current results and progress are much easier to assess. Refer to [http://www.testspace.com Testspace] website for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Stride_Overview&amp;diff=14726</id>
		<title>Stride Overview</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Stride_Overview&amp;diff=14726"/>
		<updated>2021-05-21T23:35:15Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Stride™&#039;&#039;&#039; is an [http://en.wikipedia.org/wiki/XUnit xUnit-style] test framework for C/C++ software comprised of an external test &#039;&#039;Runner&#039;&#039;, &#039;&#039;Runtime&#039;&#039; source code library, and a set of &#039;&#039;Build Tools&#039;&#039;. It was designed with a specific focus on enabling tests to be executed on a device using a fully functional build.&amp;lt;ref&amp;gt;Fully functional build means that the software works the same as before instrumentation, but now has built-in tests that can be invoked on-demand by the test &#039;&#039;Runner&#039;&#039;.&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Stride&#039;s unique host-target architecture allows easier and better On-Target/Device White-box testing. Software builds automatically become more testable; facilitating deeper code coverage opportunities.&amp;lt;ref&amp;gt;For more details refer to our [[Frequently Asked Questions About STRIDE | FAQ]].&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stride is also fully integrated with [http://www.testspace.com Testspace] for test content management. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[image:Stride Overview.jpg | 600px | center | Stride block diagram]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Runner ====&lt;br /&gt;
Stride includes a lightweight [[Stride_Runner | &#039;&#039;&#039;Runner&#039;&#039;&#039;]] application that is a host-based command-line utility for interactive and automated test execution. It also integrates seamlessly with [http://www.testspace.com Testspace] for &#039;&#039;test content management&#039;&#039;.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Runtime====&lt;br /&gt;
Stride also contains a [[STRIDE Runtime | &#039;&#039;&#039;Runtime&#039;&#039;&#039;]] software source package. The Runtime enables &#039;&#039;testability&#039;&#039; by integrating with the software under test along with supporting connectivity with the host system, all with minimal impact on performance or code size. The software is agnostic to the RTOS, CPU, and host/device I/O transport. It supports simple &#039;&#039;single-process&#039;&#039; devices as well as &#039;&#039;multi-process&#039;&#039; and &#039;&#039;multi-threaded&#039;&#039; environments. It can be used with software running in either user or kernel mode, including drivers. Typically the Runtime is configured as a background thread and only executes when running tests.&lt;br /&gt;
&lt;br /&gt;
==== Build Tools ====&lt;br /&gt;
[[image:STRIDE 4.2 Framework-b.jpg |right|250px | border]]&lt;br /&gt;
&lt;br /&gt;
The Stride [[STRIDE_Build_Tools | &#039;&#039;&#039;Build Tools&#039;&#039;&#039;]] are a set of command-line utilities that integrate with your target software build process. They preprocess standard C/C++ header files that contain Stride test declarations to auto-generate C/C++ source code comprising a custom [[Intercept_Module | &#039;&#039;&#039;Intercept Module&#039;&#039;&#039;]]. The intercept module code is then included in your target software build along with the Stride Runtime to provide &#039;&#039;fixturing&#039;&#039; and &#039;&#039;harnessing&#039;&#039; test logic as part of your build image.&lt;br /&gt;
&lt;br /&gt;
== Cross Platform ==&lt;br /&gt;
Stride works on virtually any target platform. Stride&#039;s cross-platform framework facilitates a &#039;&#039;unified testing approach&#039;&#039; for all team members, enabling organizations to standardize on a test workflow that is independent of the target platform being used or what branch of software is being changed.&lt;br /&gt;
&lt;br /&gt;
==== Runtime Written in Standard C ====&lt;br /&gt;
The Stride Runtime is written in standard ANSI C on top of a simple customizable [[Platform_Abstraction_Layer | &#039;&#039;&#039;platform abstraction layer&#039;&#039;&#039;]] that enables it to work across platforms. It can be configured for a single process multi-threading environment or multiple process environments (i.e. Android, Linux, Windows, Embedded RTOS, etc.). It is delivered as source code to be included in the application&#039;s build system. The transport between the host and target is configurable and supports Serial and TCP/IP by default. Custom transports are also available.&lt;br /&gt;
&lt;br /&gt;
The runtime has been tailored specifically for embedded applications; overhead is minimal. It consumes very little memory for table and control block storage. Resource usage is configurable and can be adjusted to conform to any limitations of the target platform.&lt;br /&gt;
&lt;br /&gt;
==== Integrates With Your Existing Build System ====&lt;br /&gt;
Stride auto-generates &#039;&#039;intercept module&#039;&#039; harnessing and remoting functionality as C or C++ source code during the make process, removing any dependencies on specific compilers and / or processors.&lt;br /&gt;
&lt;br /&gt;
==== Supports Off-Target Testing ====&lt;br /&gt;
Testing can also be simulated using a standard desktop computer (Windows, Linux, or FreeBSD) with no changes to test code. The Stride &#039;&#039;SDKs&#039;&#039; allow for a seamless transition between the real target and an Off-Target host environment.&lt;br /&gt;
&lt;br /&gt;
== Rich set of Assertions ==&lt;br /&gt;
Test cases are typically constructed leveraging a large set of available assertion macros. When failures occur, these macros automatically set test status and provide details to the test report such as file name, line number, and condition causing the failure. Stride provides a large set of these macros to validate a wide variety of scenarios. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source  lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;mytest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void MyTest::CheckFoo() {&lt;br /&gt;
    ..  &lt;br /&gt;
    srEXPECT_EQ(foo(2 + 2), 4); &lt;br /&gt;
}&lt;br /&gt;
void MyTest::CheckBoo() {&lt;br /&gt;
    ..&lt;br /&gt;
    srASSERT_GT(boo(3 * 3), 7); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extensive Parameter Support ==&lt;br /&gt;
&lt;br /&gt;
Parameterized testing is key to reducing test code duplication. Constructor arguments, name-value collection, and host file remoting are all supported. Stride provides an easy way for passing and accessing these types of parameters, allowing customization of test behavior at runtime.&lt;br /&gt;
&lt;br /&gt;
Create an INI-type of file (i.e. &#039;&#039;myinput.ini&#039;&#039;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=ini&amp;gt;&lt;br /&gt;
Loopsize   = 10&lt;br /&gt;
InputFile  = ${MYPATH}/datacontent.bin&lt;br /&gt;
Toogle     = On&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pass the name-value collection using the Stride Runner&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
$ stride .. --run=&amp;quot;MyTest(/path/to/myinput.ini)&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now simply access your input within test logic using built-in services&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  // .. doing stuff ..&lt;br /&gt;
  GetParam(&amp;quot;InputFile&amp;quot;, buffer, size);&lt;br /&gt;
  //.. using parameters for test logic&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Doubles &amp;amp; Test Points == &lt;br /&gt;
Stride offers advanced testing techniques that enable deeper and more effective testing with less effort.&lt;br /&gt;
&lt;br /&gt;
==== Test Doubles ====&lt;br /&gt;
For more advanced testing scenarios, dependencies can be &#039;&#039;&#039;doubled&#039;&#039;&#039;. This feature provides a means for intercepting C/C++ global functions on the target and substituting a stub, fake, or mock. The substitution is all controllable via the runtime, allowing the software to continue executing normally when not running a test.&lt;br /&gt;
&lt;br /&gt;
For example something like the following could be useful:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
void MySuite::test1()&lt;br /&gt;
{&lt;br /&gt;
  // inserting my own version of malloc()&lt;br /&gt;
  srDOUBLE_SET(malloc, my_malloc_stub);&lt;br /&gt;
&lt;br /&gt;
  // calling a routine that uses malloc(). checking handled null correctly&lt;br /&gt;
  ret_code = FuncThatUsesMalloc(42);&lt;br /&gt;
  srEXPECT_EQ(ret_code, -1)&lt;br /&gt;
&lt;br /&gt;
  // restoring the real malloc()&lt;br /&gt;
  srDOUBLE_RESET(malloc)&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Test Points ====&lt;br /&gt;
Stride leverages &#039;&#039;source instrumentation&#039;&#039; to provide an additional validation technique called &#039;&#039;&#039;Expectation Testing&#039;&#039;&#039; that can be applied to the executing software application. The execution sequencing of the code, along with state data, can be automatically validated based on &#039;&#039;what is expected&#039;&#039;. This validation technique does not focus on calling functions/methods but rather verifies &#039;&#039;code execution sequencing&#039;&#039;. This can span threads, process boundaries, and even multiple targets, as the application(s) is running. Leveraging simple macros -- called &#039;&#039;&#039;Test Points&#039;&#039;&#039; -- developers strategically instrument the source under test.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&#039;c&#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* a test point with formatted string payload */&lt;br /&gt;
srTEST_POINT_STR(&amp;quot;IMPORTANT&amp;quot;, &amp;quot;important date= %d&amp;quot;, myVar);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The test validation is done without impacting the application&#039;s performance (the on-target test code is executed in a background thread and scripts are executed on the host machine). When failures do occur, context is provided with the file name and associated line number of the failed expectations. This type of validation can be applied to a wide-range of testing scenarios:&lt;br /&gt;
* State Machines&lt;br /&gt;
* Data flow through system components&lt;br /&gt;
* Sequencing between threads&lt;br /&gt;
* Drivers that don&#039;t return values&lt;br /&gt;
* and much more ...&lt;br /&gt;
&lt;br /&gt;
The following is a snippet of what the test code might look like&lt;br /&gt;
&amp;lt;source lang=&#039;c&#039;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
srTestPointExpect_t expected[]={&lt;br /&gt;
  {&amp;quot;IMPORTANT&amp;quot;}, myCheckData,&lt;br /&gt;
  {&amp;quot;ANOTHER_TP&amp;quot;},&lt;br /&gt;
  {0}};&lt;br /&gt;
&lt;br /&gt;
// setup the expections&lt;br /&gt;
srTestPointSetup(expected, ..);&lt;br /&gt;
&lt;br /&gt;
// start the operations&lt;br /&gt;
&lt;br /&gt;
srTestPointWait(handle, 1000);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test Implementation ==&lt;br /&gt;
Stride based tests are integrated with the existing build system enabling your software to be both fully &#039;&#039;functional&#039;&#039; and &#039;&#039;testable&#039;&#039; at the same time. The &#039;&#039;test logic&#039;&#039; is separated from the application source code and is &#039;&#039;&#039;not&#039;&#039;&#039; executed unless invoked via the Stride Runner. Any &#039;&#039;source instrumentation&#039;&#039; is only active when executing tests. The impact of built-in testability to the software application is nominal.&lt;br /&gt;
&lt;br /&gt;
The test validation can be implemented in both &#039;&#039;C/C++&#039;&#039; on the target and &#039;&#039;Perl&#039;&#039; on the host. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C/C++ Test Example&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source  lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
class MyTest {&lt;br /&gt;
public: &lt;br /&gt;
    void CheckFoo();&lt;br /&gt;
    void CheckBoo();&lt;br /&gt;
};&lt;br /&gt;
#pragma scl_test_class(MyTest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source  lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;mytest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
void MyTest::CheckFoo() {&lt;br /&gt;
    ..  &lt;br /&gt;
    srEXPECT_EQ(foo(2 + 2), 4); &lt;br /&gt;
}&lt;br /&gt;
void MyTest::CheckBoo() {&lt;br /&gt;
    ..&lt;br /&gt;
    srASSERT_GT(boo(3 * 3), 7); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Perl Script Example&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
package MyTests;&lt;br /&gt;
use base qw(STRIDE::Test);&lt;br /&gt;
use STRIDE::Test;&lt;br /&gt;
&lt;br /&gt;
sub CheckFoo : Test&lt;br /&gt;
{&lt;br /&gt;
    EXPECT_EQ(Remote-&amp;gt;foo(2 + 2), 4);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub CheckBoo : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_GT(Remote-&amp;gt;boo(3 * 3), 7);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Works with Testspace ==&lt;br /&gt;
&lt;br /&gt;
Stride has been designed to fully leverage Testspace features such as test design, execution control, and test analysis. With Testspace, test content and status remain better organized and current results and progress are much easier to assess. Refer to [http://www.testspace.com Testspace] website for more details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;hr/&amp;gt;&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14725</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14725"/>
		<updated>2020-12-16T05:01:09Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* 5.0.03b */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile Clang extensions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrect handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;inline namespace&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;nodiscard&amp;quot; attribute in Microsoft mode.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile forward-declared &amp;quot;enum&amp;quot; in Microsoft mode.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to handle GCC and VC &#039;preinclude&#039; alternatives.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile variation of GCC `enum __attrbute__((..))`.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14724</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14724"/>
		<updated>2020-12-16T05:00:50Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Minor and Patch releases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile Clang extensions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrect handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;inline namespace&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;nodiscard&amp;quot; attribute in Microsoft mode.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile forward-declared &amp;quot;enum&amp;quot; in Microsoft mode.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to handle handle GCC and VC &#039;preinclude&#039; alternatives.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile variation of GCC `enum __attrbute__((..))`.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Platform_Abstraction_Layer&amp;diff=14723</id>
		<title>Platform Abstraction Layer</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Platform_Abstraction_Layer&amp;diff=14723"/>
		<updated>2020-12-10T18:56:50Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* PAL Transport (I/O) Services */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
The PAL, or Platform Abstraction Layer, enables the [[Runtime Reference|STRIDE Runtime]] to be platform-independent by providing a consistent interface for the STRIDE Runtime regardless of the operating system or data transport used. This interface layer is necessary given the broad variety of operating systems and data transports that exist within embedded systems today.&lt;br /&gt;
&lt;br /&gt;
A small set of functions, written according to the PAL specification, provide the interfaces between your operating system and platform transport mechanism to the STRIDE Runtime. Through the PAL, the STRIDE Runtime becomes independent of any specific platform. The PAL is designed to use standard concepts and services present in almost all operating systems and transport mechanisms. To complete a PAL, you’ll need to be familiar with concepts such as event signaling, scheduling, timers, critical section protection, memory allocation and data transfers. &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;pal.h&#039;&#039;&#039; header file provided with the STRIDE Runtime contains all the function prototypes necessary for writing the PAL. &lt;br /&gt;
&lt;br /&gt;
STRIDE provides fully functional implementations of the PAL for several major platforms (Windows, Linux, FreeBSD, etc.).&lt;br /&gt;
&lt;br /&gt;
For a detailed description of the PAL and its interfaces, see the &#039;&#039;&#039;[[Platform Abstraction Layer|Platform Abstraction Layer]]&#039;&#039;&#039; description and the [[Media:s2sPAL.pdf|STRIDE Platform Abstraction Layer (PAL) Specification]].&lt;br /&gt;
&lt;br /&gt;
= PAL Concepts =&lt;br /&gt;
This section describes the basic concepts of the PAL and the system services it must provide.&lt;br /&gt;
&lt;br /&gt;
== Function Registration ==&lt;br /&gt;
Typically, the STRIDE Runtime calls PAL functions; however, there are some functions in the STRIDE Runtime that need to be called by the PAL. To eliminate PAL dependencies on the STRIDE Runtime, these functions are accessed through a function registration process initiated by the STRIDE Runtime at startup. You write the registration routine called by the Runtime. This registration routine passes in the address of the STRIDE Runtime function to be registered as the input parameter, and stores the address of the STRIDE Runtime function in your own function variable, which is actually a pointer to a function. You can then call the registered function using your function pointer variable.&lt;br /&gt;
&lt;br /&gt;
The registered STRIDE Runtime functions allow you to complete such tasks as delivering a received I block to the Runtime, checking the number of I-blocks the Runtime has ready to send out, or signalling the Runtime that your transport is ready for the next I-block. It is not necessary for the PAL to know the details of these Runtime functions.&lt;br /&gt;
&lt;br /&gt;
== Task Synchronization / Event Notification ==&lt;br /&gt;
Unique information is required by an operating system to notify a thread of a pending event. This information can be a native OS thread id, a simple index into a table, an address to a thread control block, the address of a semaphore or one of a number of other implementations. Although each implementation may be different, a unique notifier is necessary for each thread. The STRIDE Runtime calls this unique information a Notification Identifier (NID). A thread uses a NID when waiting for a STRIDE event, and the STRIDE Runtime uses the same NID to notify the thread of a pending STRIDE event.&lt;br /&gt;
&lt;br /&gt;
Support for sharing of the synchronization object among multiple applications should be ensured in case of multi-process target is enabled.&lt;br /&gt;
&lt;br /&gt;
== Protection using Mutex ==&lt;br /&gt;
The STRIDE Runtime needs to protect critical and shared data structures from multiple, simultaneous accesses by multiple threads and, in case of multi-process target is enabled, by multiple applications. The PAL requires implementing protection using Mutexes that can be created and, in case of multi-process target is enabled, used with a unique name by any STRIDE Runtime module or PAL itself. The STRIDE Runtime guarantees that calls to palMutexLock() will not be nested.&lt;br /&gt;
&lt;br /&gt;
== Timer Administration ==&lt;br /&gt;
The STRIDE Runtime requires that at least one timer be available. When a timer is created, a callback is registered so that the STRIDE Runtime can be notified of timer expirations.  A user parameter, provided when the timer is created, is passed to the callback when it gets called. If several timers share a callback routine, this user parameter can be used to identify which timer expired. The STRIDE Runtime can also stop, start and delete timers.&lt;br /&gt;
&lt;br /&gt;
Because the STRIDE Runtime also has the need to timestamp trace log data, a routine that returns the system time, palGetTime(), is also part of the PAL. This routine is not associated with timers. &lt;br /&gt;
&lt;br /&gt;
== Memory Allocation ==&lt;br /&gt;
The STRIDE Runtime dynamically allocates memory for messages and trace log storage. The Runtime uses palMemAlloc() and palMemFree() to allocate memory dynamically and then return it to the system.&lt;br /&gt;
&lt;br /&gt;
The Runtime uses palMemSegmentOpen() and palMemSegmentClose() to create, open and close memory segments. In case of single process target, these routines can simply allocate dynamic memory as in normal memory allocation routines.&lt;br /&gt;
&lt;br /&gt;
To support multi-process target, the STRIDE Runtime requires dynamic and configurable memory allocated through palMemAlloc() and static internal memory allocated directly through palMemSegmentOpen()  to be shared memory.&lt;br /&gt;
&lt;br /&gt;
In case of multi-process target, palMemAlloc() and palMemFree() routines can simply use the STRIDE Runtime’s Memory Management module &#039;&#039;srMem&#039;&#039;, which is in turn dependent on palMemSegmentOpen() and palMemSegmentClose() routines.&lt;br /&gt;
&lt;br /&gt;
== Transport Services ==&lt;br /&gt;
The PAL transport routines are needed to transfer I-blocks (STRIDE data packets) into and out of the STRIDE Runtime on your target platform. These routines handle the buffering and transferring of data to and from your transport mechanism. The PAL also contains registration routines that allow for STRIDE Runtime routines to be called by the PAL.&lt;br /&gt;
&lt;br /&gt;
The palOut() routine enables the STRIDE Runtime to transfer I-blocks to your transport. The STRIDE Runtime calls the palOut() routine whenever it needs to send out an I-block.&lt;br /&gt;
&lt;br /&gt;
Your transport calls the routine registered with the palOutRdyReg() routine when the transport is ready for the next I-block to be transmitted. The STRIDE Runtime will not call the palOut() routine until you call the registered function. In this way, you can control the flow of transmitted I-blocks.&lt;br /&gt;
When a complete I-block has been received by your transport, the routine registered with the palInReg() routine should be called to put the received I-block into the STRIDE Runtime.&lt;br /&gt;
&lt;br /&gt;
In some cases it is useful to know when the transmit path is not being requested. Your transport mechanism can check the number of I-blocks the STRIDE Runtime has ready for transmission by calling the routine registered with the palOutPndReg() routine. &lt;br /&gt;
&lt;br /&gt;
= PAL Organization =&lt;br /&gt;
&lt;br /&gt;
This section explains the two categories of PAL services that support the STRIDE Runtime, as&lt;br /&gt;
well as the files used to implement these services on your target. The &#039;&#039;&#039;pal.h&#039;&#039;&#039; header file provided with the STRIDE installation contains all the function prototypes.&lt;br /&gt;
&lt;br /&gt;
== PAL Services ==&lt;br /&gt;
The PAL services include the following:&lt;br /&gt;
* Operating System (OS) Services&lt;br /&gt;
* Input/Output (IO) Services&lt;br /&gt;
&lt;br /&gt;
== PAL Operating System Services ==&lt;br /&gt;
The PAL Operating System (OS) Services are the routines that enable the STRIDE Runtime to work with the operating system on your target platform. In order to write your PAL OS services you must have detailed knowledge of how your operating system handles thread synchronization, timers, mutexes, dynamic memory, shared memory, and notification. The PAL OS services make the features of your operating system available to the STRIDE Runtime.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;2&amp;quot; style=&amp;quot;margin:1em auto 1em&amp;quot; &lt;br /&gt;
! Function Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Synchronization&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| palCreateNID || Create a Notification Identifier (NID) &lt;br /&gt;
|-&lt;br /&gt;
| palDeleteNID || Delete a Notification Identifier (NID) &lt;br /&gt;
|-&lt;br /&gt;
| palCreateRFCProxyNID || Create the RFC Proxy Notification Identifier (NID) &lt;br /&gt;
|-&lt;br /&gt;
| palDeleteRFCProxyNID || Delete the RFC Proxy Notification Identifier (NID) &lt;br /&gt;
|-&lt;br /&gt;
| palWait || Wait for an event &lt;br /&gt;
|-&lt;br /&gt;
| palNotify || Signal a thread that an event is pending &lt;br /&gt;
|-&lt;br /&gt;
| palGetThreadId || Return current thread Id &lt;br /&gt;
|-&lt;br /&gt;
| palGetProcessId || Return current process Id &lt;br /&gt;
|-&lt;br /&gt;
| palSleep || Suspend the execution of the current thread&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Timers&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| palCreateTimer || Create a timer &lt;br /&gt;
|-&lt;br /&gt;
| palDeleteTimer || Delete a timer &lt;br /&gt;
|-&lt;br /&gt;
| palStartTimer || Start a timer &lt;br /&gt;
|-&lt;br /&gt;
| palStopTimer || Stop a timer &lt;br /&gt;
|-&lt;br /&gt;
| palGetTime || Return system time (e.g., tick count) &lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Mutex&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| palMutexInit || Initialize a mutex object&lt;br /&gt;
|-&lt;br /&gt;
| palMutexDestroy || Destroy a mutex object&lt;br /&gt;
|-&lt;br /&gt;
| palMutexLock || Lock a mutex object&lt;br /&gt;
|-&lt;br /&gt;
| palMutexUnlock || Unlock a mutex object&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Memory Management&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| palMemAlloc || Allocate a block of dynamic memory&lt;br /&gt;
|-&lt;br /&gt;
| palMemFree || Free a block of dynamic memory&lt;br /&gt;
|-&lt;br /&gt;
| palMemSegmentOpen || Create/open memory segments&lt;br /&gt;
|-&lt;br /&gt;
| palMemSegmentClose || Close memory segments&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== PAL Input/Output Services ==&lt;br /&gt;
The PAL Input/Output (IO) Services are the routines that enable the STRIDE Runtime to&lt;br /&gt;
work with different data transport mechanisms. These routines enable your transport to&lt;br /&gt;
send and receive data between the host and the target.&lt;br /&gt;
&lt;br /&gt;
The IO services have also been defined to allow the target platform to control how&lt;br /&gt;
memory is managed and the rate of data exchange. &lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; border=&amp;quot;2&amp;quot; style=&amp;quot;margin:1em auto 1em&amp;quot; &lt;br /&gt;
! Function Name !! Description&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Transmit&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| palOutPndReg || Registers a callback to query the current output queue of the Runtime&lt;br /&gt;
|-&lt;br /&gt;
| palOutRdyReg || Registers a callback to identify the transport as ready to receive data &lt;br /&gt;
|-&lt;br /&gt;
| palOut || Send data to the host platform&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Receive&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| palInReg || Registers a callback to process the data extracted from the transport and identified for the STRIDE Runtime&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Integrating the PAL =&lt;br /&gt;
&lt;br /&gt;
== PAL Operating System (OS) Services ==&lt;br /&gt;
The &#039;&#039;&#039;[[Platform Abstraction Layer|PAL]]&#039;&#039;&#039; OS Services provide the glue between the STRIDE Runtime and the Target Operating System. The services it must provide are:&lt;br /&gt;
* Task protection and synchronization (e.g. mutexes)&lt;br /&gt;
* Periodic Timers&lt;br /&gt;
* Get Time Stamp&lt;br /&gt;
* Memory Management&lt;br /&gt;
By convention, these services are implemented in a file called &#039;&#039;palOS.c&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== PAL Transport (I/O) Services ==&lt;br /&gt;
The PAL Transport Services implement the target peer of the I/O services between the Host and Target. By convention, these services are implemented in a file called &#039;&#039;palIO.c&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
The pre-packaged PALs in the [[Posix SDK]] and [[Windows SDK]] provide both a Serial and a TCP/IP transport.&lt;br /&gt;
&lt;br /&gt;
;What about USB?: S2 does not yet provide a native USB transport. If you wish to use one of our prepackaged transports, then the  USB can either be used to emulate a serial (COM) port, or can be used with TCP/IP by installing and using USBNet. USBNet is open software for Linux and Windows that permits TCP/IP connections over USB.  Google &amp;quot;USBNet&amp;quot; to locate a driver for your systems.&lt;br /&gt;
&lt;br /&gt;
;What if I need a custom transport?: A custom transport can be implemented. Your PAL implementation will need to implement the target side of the custom communication.&lt;br /&gt;
&lt;br /&gt;
== PAL Resource Requirements ==&lt;br /&gt;
Most PALs require a reader task to monitor the Transport input data stream.&lt;br /&gt;
&lt;br /&gt;
PAL memory usage is limited to a few dozen bytes for table and control block storage.  The size of I/O buffers used by the reader task are Transport dependent but are usually in the 8KB range.&lt;br /&gt;
&lt;br /&gt;
There is no &amp;quot;formal&amp;quot; mechanism required for initializing the PAL. That is, an initialization function is not required by the STRIDE Runtime or IM.  In addition good practices require releasing resources on application exit. However, over time the convention of providing &#039;&#039;palInit()&#039;&#039; and &#039;&#039;palUninit()&#039;&#039; functions has developed. All of the Pre-Packaged PAL use this convention and their &#039;&#039;palInit()&#039;&#039; function must be called before any other STRIDE Runtime function and &#039;&#039;palUninit()&#039;&#039; on application shutdown.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Posix_SDK&amp;diff=14722</id>
		<title>Posix SDK</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Posix_SDK&amp;diff=14722"/>
		<updated>2020-12-10T18:52:22Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction  =&lt;br /&gt;
&lt;br /&gt;
The Posix SDK is a platform-specific package that contains the STRIDE Runtime source and [[Platform_Abstraction_Layer|PAL]] implementation, along with integration tools to build a stride library and a strideDaemon and a TestApp applications. It is intended for this article to be used as a reference.&lt;br /&gt;
&lt;br /&gt;
=Target Makefile=&lt;br /&gt;
&lt;br /&gt;
The SDK makefile provides targets for building the [[Runtime Reference|STRIDE Runtime]] library and two executable applications - a strideDaemon (for a [[#Multiprocess_Application_Integration|multiprocess]] application environment), and an TestApp (see [[Building_an_Off-Target_Test_App|this]] for more information).&lt;br /&gt;
&lt;br /&gt;
The default make target builds the STRIDE Runtime library. When a multiprocess runtime library is specified (see RTSINGLEPROC below), and a strideDaemon executable build as well. To build the test application, specify the &#039;&#039;&#039;testapp&#039;&#039;&#039; make target. &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;testapp&#039;&#039;&#039; target compiles SCL source markup present in the Runtime source and therefore requires that the [[Build Tools]] be installed on your system and in your executable search path. &lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
The behavior of the makefile can be affected by setting certain make variable parameters. For example, the following make invocation will change the value of the TOOLCHAIN and DEBUG variables when making:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~/stride/SDK/Posix/src&lt;br /&gt;
make TOOLCHAIN=arm DEBUG=1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following variable are intended to be specified or overridden as needed:&lt;br /&gt;
&lt;br /&gt;
====TOOLCHAIN====&lt;br /&gt;
&lt;br /&gt;
The default compiler toolchain when TOOLCHAIN is set to &#039;&#039;&#039;x86&#039;&#039;&#039; is gcc/g++/ar, which are assumed to be in your path.  For any other TOOLCHAIN value, the toolchain tools are $(TOOLCHAIN)-linux-gcc/g++/ar where $(TOOLCHAIN) is replaced by the specified TOOLCHAIN setting.  If your toolchain does not fit this pattern, you will need to modify the makefile or explicitly override values for CC, CPP, and AR.&lt;br /&gt;
&lt;br /&gt;
====LIBRARYTYPE====&lt;br /&gt;
&lt;br /&gt;
The default behavior of the makefile is to build the STRIDE Runtime as a static library. If you prefer a shared library, set this value to &#039;.so&#039;.&lt;br /&gt;
&lt;br /&gt;
====DEBUG====&lt;br /&gt;
&lt;br /&gt;
The default configuration compiles with optimization and NDEBUG defined.  If you prefer debuggable binaries, set this value to 1.&lt;br /&gt;
&lt;br /&gt;
====RTSINGLEPROC====&lt;br /&gt;
&lt;br /&gt;
The default configuration, set to &#039;&#039;&#039;1&#039;&#039;&#039;, compiles the runtime library with no multiprocess support.  If you want [[#Multiprocess_Application_Integration|multiprocess]] functionality, you can enable this by explicitly setting this value to &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====STANDALONE_TESTAPP====&lt;br /&gt;
&lt;br /&gt;
The default configuration, set to &#039;&#039;&#039;1&#039;&#039;&#039;, builds the TestApp as a [[#Standalone_Application_Integration|standalone]] application. When set to &#039;&#039;&#039;0&#039;&#039;&#039; the TestApp is built as a [[#Multiprocess_Application_Integration|multiprocess]] application. &amp;lt;br&amp;gt;&lt;br /&gt;
The STANDALONE_TESTAPP variable is affected by the value of RTSINGLEPROC. If RTSINGLEPROC is &#039;&#039;&#039;1&#039;&#039;&#039; and STANDALONE_TESTAPP is &#039;&#039;&#039;0&#039;&#039;&#039;, this is an invalid combination and STANDALONE_TESTAPP will automatically be set to &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====S2SCOPTS====&lt;br /&gt;
&lt;br /&gt;
The STRIDE build process that produces the database and [[Intercept Module]] for the test application relies on target settings. These settings are passed as options to the stride compiler and are most conveniently stored in an options file.  We provide a default options file with target settings that are appropriate for x86 Linux targets with GNU compilers -- this file is &#039;&#039;SDK/Posix/settings/stride.s2scompile&#039;&#039; in the SDK distribution. &lt;br /&gt;
&lt;br /&gt;
We recommend that you make a copy of this file and adjust the settings as appropriate for your target. You can then set this variable - &#039;&#039;&#039;S2SCOPTS&#039;&#039;&#039; to the path to your settings file.  This will cause the make process to use the specified target settings options instead of the default one provided in the SDK. This same settings file should ultimately be used for the STRIDE build integration with your application source code.&lt;br /&gt;
&lt;br /&gt;
===S2 Build Flags===&lt;br /&gt;
The target Makefile sets the following Build Tool flags:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S2_BIND_FLAGS = --starting_suid=7000&lt;br /&gt;
S2_IM_FLAGS = --disable_access_class&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[S2sbind#Options|s2sbind]] and [[S2sinstrument#Options|s2sinstrument]] flags are combined so that the test application only registers for test message IDs that are created in a higher range so that it doesn&#039;t conflict with other application processes.&lt;br /&gt;
&lt;br /&gt;
===Makefile Targets===&lt;br /&gt;
The makefile included with the SDK supports the following targets:&lt;br /&gt;
;all&lt;br /&gt;
: builds the runtime library and daemon&lt;br /&gt;
;library&lt;br /&gt;
: builds the runtime library&lt;br /&gt;
;daemon&lt;br /&gt;
: builds &#039;&#039;library&#039;&#039; and--if RTSINGLEPRC is not zero--the STRIDE daemon&lt;br /&gt;
;im&lt;br /&gt;
: builds the STRIDE database and generates IM files&lt;br /&gt;
;testapp&lt;br /&gt;
:builds &#039;&#039;library&#039;&#039;, &#039;&#039;im&#039;&#039; and instrumented test application&lt;br /&gt;
;clean&lt;br /&gt;
:removes all generated files&lt;br /&gt;
&lt;br /&gt;
=Target API (stride.h)=&lt;br /&gt;
&lt;br /&gt;
The Posix SDK provides a simplified application interface for initializing the STRIDE subsystem and starting STRIDE messaging and IM threads. The API includes the following routines:&lt;br /&gt;
&lt;br /&gt;
===srBOOL strideInit(const strideIO_t * io)===&lt;br /&gt;
&lt;br /&gt;
This function initializes the STRIDE subsystem.  The IO configuration is passed in as an argument. If this argument is NULL, then the process will attempt to attach to an already running runtime application (daemon) using shared memory for IPC. This function should only be called once per application and should be match with a call to &amp;lt;tt&amp;gt;strideUninit()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===srBOOL strideUninit(void)===&lt;br /&gt;
&lt;br /&gt;
Terminates any threads that have been started with this API and uninitializes the STRIDE subsystem.&lt;br /&gt;
&lt;br /&gt;
===srBOOL strideCreateThread(strideThreadFunc_t entry, const srCHAR * name, void* param)===&lt;br /&gt;
&lt;br /&gt;
Creates a thread to be managed by the STRIDE subsystem. Threads created using this routine will be sent a palSTOP_EVENT notification (available from palWait) and should respond promptly to this event. The name parameter is used primarily for logging purposes.&lt;br /&gt;
&lt;br /&gt;
===strideCreateIMThread(name)===&lt;br /&gt;
&lt;br /&gt;
This is a macro that wraps the invocation of &amp;lt;tt&amp;gt;strideCreateThread()&amp;lt;/tt&amp;gt; for intercept module entry point functions. Only the IM name must be provided.&lt;br /&gt;
&lt;br /&gt;
===void strideStopThread(srDWORD id)===&lt;br /&gt;
&lt;br /&gt;
Signals a thread to stop (sends palSTOP_EVENT) and joins it.&lt;br /&gt;
&lt;br /&gt;
===void strideExWaitForExit(void)===&lt;br /&gt;
&lt;br /&gt;
This function can be called by the main application thread to block until a termination signal ([http://en.wikipedia.org/wiki/SIGTERM SIGTERM]) is received. Internally it uses the pause function to wait for signals to be delivered and then checks if termination has occurred.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This function is optional - if you block some other way (e.g. create the application&#039;s message loop) do not call this function.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===void strideExBlockExitSignals(srBOOL enable)===&lt;br /&gt;
&lt;br /&gt;
This function can be called by the main application thread to block termination signals ([http://en.wikipedia.org/wiki/SIGTERM SIGTERM]).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This function is optional - if you manage your termination signals behaviour do not call this function.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Target Integration=&lt;br /&gt;
&lt;br /&gt;
Here are a few examples of how to integrate the stride API into your application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; The following code assumes that the intercept module was generated with a name of &#039;&#039;myintercept&#039;&#039;.  Change all references to that name in your code to the chosen intercept module name.&lt;br /&gt;
&lt;br /&gt;
===Standalone Application Integration===&lt;br /&gt;
&lt;br /&gt;
The following code demonstrates how to integrate your application with the STRIDE Runtime. Your application might require other logic at startup - you can integrate the following calls according to your needs. Note that this code initializes the STRIDE subsystem and assumes a single standalone process that creates the STRIDE system threads as well as application threads.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stride.h&amp;gt;&lt;br /&gt;
#include &amp;quot;myinterceptIMEntry.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
    /* initialize the STRIDE subsytem using default I/O */&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
    strideIO_t io = {strideIO_t::strideDEFAULT};&lt;br /&gt;
#else&lt;br /&gt;
    strideIO_t io = {strideDEFAULT};&lt;br /&gt;
#endif&lt;br /&gt;
    if (strideInit(&amp;amp;io) != srTRUE)&lt;br /&gt;
        return -1;&lt;br /&gt;
&lt;br /&gt;
    /* start all IM threads */&lt;br /&gt;
    if (strideCreateIMThread(myintercept) != srTRUE)&lt;br /&gt;
        return -1;&lt;br /&gt;
&lt;br /&gt;
    /* application code here */&lt;br /&gt;
    strideExWaitForExit(); /* or block some other way (e.g. application&#039;s message loop) */&lt;br /&gt;
&lt;br /&gt;
    /* stop all IM threads and uninitialize STRIDE subsystem */&lt;br /&gt;
    strideUninit();&lt;br /&gt;
    return 0;   &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sample code assumes you have generated your Intercept Module with a prefix name of &#039;&#039;&#039;myintercept&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; If you need to provide additional message processing threads, you can call &amp;lt;tt&amp;gt;strideCreateThread()&amp;lt;/tt&amp;gt; for each additional thread that you wish to add (this must be called prior to your application code).&lt;br /&gt;
&lt;br /&gt;
===Multiprocess Application Integration===&lt;br /&gt;
&lt;br /&gt;
This code demonstrates how to integrate your application with the STRIDE Runtime in multiprocess mode. In this mode, the pre-packaged strideDaemon runs simultaneously with the application and provides the STRIDE IO and runtime thread initialization. The host communicates with the application process through the strideDaemon (or another STRIDE IO process). In this sample, the only difference with the preceding sample is the call to strideInit which, in this case, specifies no IO parameters which indicates to the API that the communication and runtime threads should not be started. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stride.h&amp;gt;&lt;br /&gt;
#include &amp;quot;myinterceptIMEntry.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char **argv)&lt;br /&gt;
{&lt;br /&gt;
    if (strideInit(NULL) != srTRUE)&lt;br /&gt;
        return -1;&lt;br /&gt;
&lt;br /&gt;
    if (strideCreateIMThread(myintercept) != srTRUE)&lt;br /&gt;
        return -1;&lt;br /&gt;
&lt;br /&gt;
    strideExWaitForExit();&lt;br /&gt;
&lt;br /&gt;
    strideUninit();&lt;br /&gt;
    return 0;   &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel Module Integration===&lt;br /&gt;
&lt;br /&gt;
The following code demonstrates how to integrate your kernel space module with the STRIDE Runtime. Your module might require other logic at startup - you can integrate the following calls according to your needs. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; You need to also have an active user space STRIDE enabled application (see [[#Standalone_Application_Integration | above]]) that runs the core STRIDE Runtime and IO services. That application also must be built with &amp;lt;tt&amp;gt;-DPAL_KERNEL_UDP_PORT=nnnn&amp;lt;/tt&amp;gt;, where the &amp;quot;nnnn&amp;quot; matches the value defined below.&lt;br /&gt;
&lt;br /&gt;
====Linux====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;linux/module.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#if defined(STRIDE_ENABLED) &amp;amp;&amp;amp; STRIDE_ENABLED&lt;br /&gt;
#define PAL_KERNEL_UDP_PORT 8888 /* value should match whatever is defined in the &amp;quot;user&amp;quot; STRIDE Runtime */&lt;br /&gt;
#include &amp;lt;stride.c&amp;gt; /* that&#039;s right, directly include the source file */ &lt;br /&gt;
#endif /* STRIDE_ENABLED */&lt;br /&gt;
&lt;br /&gt;
int init_module(void)&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
#if defined(STRIDE_ENABLED) &amp;amp;&amp;amp; STRIDE_ENABLED&lt;br /&gt;
    strideInit(NULL);&lt;br /&gt;
#endif /* STRIDE_ENABLED */&lt;br /&gt;
...&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void cleanup_module(void)&lt;br /&gt;
{&lt;br /&gt;
#if defined(STRIDE_ENABLED) &amp;amp;&amp;amp; STRIDE_ENABLED&lt;br /&gt;
    strideUninit();&lt;br /&gt;
#endif /* STRIDE_ENABLED */&lt;br /&gt;
...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t need to compile any other source nor to link to any other library. Just make sure you pass the following extra flags to your compiler:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
EXTRA_CFLAGS += -DSTRIDE_ENABLED=1 -I&amp;quot;$(STRIDE_DIR)/SDK/Posix/src&amp;quot; -I&amp;quot;$(STRIDE_DIR)/SDK/Runtime&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====FreeBSD====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/module.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/kernel.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#if defined(STRIDE_ENABLED) &amp;amp;&amp;amp; STRIDE_ENABLED&lt;br /&gt;
#define PAL_KERNEL_UDP_PORT 8888 /* value should match whatever is defined in the &amp;quot;user&amp;quot; STRIDE Runtime */&lt;br /&gt;
#include &amp;lt;stride.c&amp;gt; /* that&#039;s right, directly include the source file */ &lt;br /&gt;
#endif /* STRIDE_ENABLED */&lt;br /&gt;
&lt;br /&gt;
/* The function called at load/unload. */&lt;br /&gt;
static int event_handler(struct module *module, int event, void *arg) {&lt;br /&gt;
        int e = 0; /* Error, 0 for normal return status */&lt;br /&gt;
        switch (event) {&lt;br /&gt;
        case MOD_LOAD:&lt;br /&gt;
            ...&lt;br /&gt;
#if defined(STRIDE_ENABLED) &amp;amp;&amp;amp; STRIDE_ENABLED&lt;br /&gt;
            strideInit(NULL);&lt;br /&gt;
#endif /* STRIDE_ENABLED */&lt;br /&gt;
            ...&lt;br /&gt;
            break;&lt;br /&gt;
        case MOD_UNLOAD:&lt;br /&gt;
            ...&lt;br /&gt;
#if defined(STRIDE_ENABLED) &amp;amp;&amp;amp; STRIDE_ENABLED&lt;br /&gt;
            strideUninit();&lt;br /&gt;
#endif /* STRIDE_ENABLED */&lt;br /&gt;
            ...&lt;br /&gt;
            break;&lt;br /&gt;
        default:&lt;br /&gt;
            e = EOPNOTSUPP; /* Error, Operation Not Supported */&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
       &lt;br /&gt;
        return(e);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t need to compile any other source nor to link to any other library. Just make sure you pass the following extra flags to your compiler:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CFLAGS += -DSTRIDE_ENABLED=1 -I&amp;quot;$(STRIDE_DIR)/SDK/Posix/src&amp;quot; -I&amp;quot;$(STRIDE_DIR)/SDK/Runtime&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Posix PAL=&lt;br /&gt;
&lt;br /&gt;
===PAL Configuration (palcfg.h)===&lt;br /&gt;
The following parameters can be configured in &#039;&#039;palcfg.h&#039;&#039; to effect the behavior of the compiled pal source files.&lt;br /&gt;
&lt;br /&gt;
; PAL_DEFAULT_DEVICE_NAME : default IO device to use.&lt;br /&gt;
; PAL_MAX_THREADS : max STRIDE integrated threads that can be managed by the STRIDE API.&lt;br /&gt;
; PAL_MAX_TIMERS : max STRIDE timers that can be active in the system.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Windows_SDK&amp;diff=14721</id>
		<title>Windows SDK</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Windows_SDK&amp;diff=14721"/>
		<updated>2020-12-10T18:49:45Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction  =&lt;br /&gt;
&lt;br /&gt;
The Windows SDK is a platform-specific package that contains the STRIDE Runtime source and [[Platform_Abstraction_Layer|PAL]] implementation, along with integration tools to build a stride library and a strideDaemon and a TestApp applications. It is intended for this article to be used as a reference. &lt;br /&gt;
&lt;br /&gt;
=Target Makefile=&lt;br /&gt;
&lt;br /&gt;
The SDK Makefile (based on [http://www.gnu.org/software/make/ GNU make] semantics) provides targets for building the [[Runtime Reference|STRIDE Runtime]] library and two executable applications - a strideDaemon (for a [[#Multiprocess_Application_Integration|multiprocess]] application environment), and an TestApp. &lt;br /&gt;
&lt;br /&gt;
The default make target builds the STRIDE Runtime library. When a multiprocess runtime library is specified (see RTSINGLEPROC below), and a strideDaemon executable build as well. To build the test application, specify the &#039;&#039;&#039;testapp&#039;&#039;&#039; make target. &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;testapp&#039;&#039;&#039; target compiles SCL source markup present in the Runtime source and therefore requires that the [[Build Tools]] be installed on your system and in your executable search path.&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
&lt;br /&gt;
The behavior of the makefile can be affected by setting certain make variable parameters. For example, the following make invocation will change the value of the TOOLCHAIN and DEBUG variables when making:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
cd stride\SDK\Windows\src&lt;br /&gt;
..\bin\make TOOLCHAIN=arm DEBUG=1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following variable are intended to be specified or overridden as needed:&lt;br /&gt;
&lt;br /&gt;
====TOOLCHAIN====&lt;br /&gt;
&lt;br /&gt;
The default compiler toolchain when TOOLCHAIN is set to &#039;&#039;&#039;x86&#039;&#039;&#039; which assumes a x86 version of cl/link/lib to be in your path. For any other TOOLCHAIN value, the toolchain compiler is cl$(TOOLCHAIN) where $(TOOLCHAIN) is replaced by the specified TOOLCHAIN setting. If your toolchain does not fit this pattern, you will need to modify the makefile or explicitly override values for CC, CPP, LINK, and AR.&lt;br /&gt;
&lt;br /&gt;
====LIBRARYTYPE====&lt;br /&gt;
&lt;br /&gt;
The default behavior of the makefile is to build the STRIDE Runtime as a static library. If you prefer a dynamic library, set this value to &#039;.dll&#039;.&lt;br /&gt;
&lt;br /&gt;
====DEBUG====&lt;br /&gt;
&lt;br /&gt;
The default configuration compiles with optimization and NDEBUG defined.  If you prefer debuggable binaries, set this value to 1.&lt;br /&gt;
&lt;br /&gt;
====RTSINGLEPROC====&lt;br /&gt;
&lt;br /&gt;
The default configuration, set to &#039;&#039;&#039;1&#039;&#039;&#039;, compiles the runtime library with no multiprocess support.  If you want [[#Multiprocess_Application_Integration|multiprocess]] functionality, you can enable this by explicitly setting this value to &#039;&#039;&#039;0&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====STANDALONE_TESTAPP====&lt;br /&gt;
&lt;br /&gt;
The default configuration, set to &#039;&#039;&#039;1&#039;&#039;&#039;, builds the TestApp as a [[#Standalone_Application_Integration|standalone]] application. When set to &#039;&#039;&#039;0&#039;&#039;&#039; the TestApp is built as a [[#Multiprocess_Application_Integration|multiprocess]] application. &amp;lt;br&amp;gt;&lt;br /&gt;
The STANDALONE_TESTAPP variable is affected by the value of RTSINGLEPROC. If RTSINGLEPROC is &#039;&#039;&#039;1&#039;&#039;&#039; and STANDALONE_TESTAPP is &#039;&#039;&#039;0&#039;&#039;&#039;, this is an invalid combination and STANDALONE_TESTAPP will automatically be set to &#039;&#039;&#039;1&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
====S2SCOPTS====&lt;br /&gt;
&lt;br /&gt;
The STRIDE build process that produces the database and [[Intercept Module]] for the diagnostics tests relies on target settings. These settings are passed as options to the stride compiler and are most conveniently stored in an options file.  We provide a default options file with target settings that are appropriate for x86 Windows targets with Microsoft compilers -- this file is &#039;&#039;SDK\Windows\settings\stride.s2scompile&#039;&#039; in the SDK distribution. &lt;br /&gt;
&lt;br /&gt;
We recommend that you make a copy of this file and adjust the settings as appropriate for your target. You can then set this variable - &#039;&#039;&#039;S2SCOPTS&#039;&#039;&#039; to the path to your settings file.  This will cause the make process to use the specified target settings options instead of the default one provided in the SDK. This same settings file should ultimately be used for the STRIDE build integration with your application source code.&lt;br /&gt;
&lt;br /&gt;
===S2 Build Flags===&lt;br /&gt;
The target Makefile sets the following Build Tool flags:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
S2_BIND_FLAGS = --starting_suid=7000&lt;br /&gt;
S2_IM_FLAGS = --disable_access_class&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The [[S2sbind#Options|s2sbind]] and [[S2sinstrument#Options|s2sinstrument]] flags are combined so that the test application only registers for test message IDs that are created in a higher range so that it doesn&#039;t conflict with other application processes.&lt;br /&gt;
&lt;br /&gt;
===Makefile Targets===&lt;br /&gt;
The makefile included with the SDK supports the following targets:&lt;br /&gt;
;all&lt;br /&gt;
: builds the runtime library and daemon&lt;br /&gt;
;library&lt;br /&gt;
: builds the runtime library&lt;br /&gt;
;daemon&lt;br /&gt;
: builds &#039;&#039;library&#039;&#039; and--if RTSINGLEPRC is not zero--the STRIDE daemon&lt;br /&gt;
;im&lt;br /&gt;
: builds the STRIDE database and generates IM files&lt;br /&gt;
;testapp&lt;br /&gt;
:builds &#039;&#039;library&#039;&#039;, &#039;&#039;im&#039;&#039; and instrumented test application&lt;br /&gt;
;clean&lt;br /&gt;
:removes all generated files&lt;br /&gt;
&lt;br /&gt;
=Target API (stride.h)=&lt;br /&gt;
&lt;br /&gt;
The Windows SDK provides a simplified application interface for initializing the STRIDE subsystem and starting STRIDE messaging and IM threads. The API includes the following routines:&lt;br /&gt;
&lt;br /&gt;
===srBOOL strideInit(const strideIO_t * io)===&lt;br /&gt;
&lt;br /&gt;
This function initializes the STRIDE subsystem.  The IO configuration is passed in as an argument. If this argument is NULL, then the process will attempt to attach to an already running runtime application (daemon) using shared memory for IPC. This function should only be called once per application and should be match with a call to &amp;lt;tt&amp;gt;strideUninit()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===srBOOL strideUninit(void)===&lt;br /&gt;
&lt;br /&gt;
Terminates any threads that have been started with this API and uninitializes the STRIDE subsystem.&lt;br /&gt;
&lt;br /&gt;
===srBOOL strideCreateThread(strideThreadFunc_t entry, const srCHAR * name, void* param)===&lt;br /&gt;
&lt;br /&gt;
Creates a thread to be managed by the STRIDE subsystem. Threads created using this routine will be sent a palSTOP_EVENT notification (available from palWait) and should respond promptly to this event. The name parameter is used primarily for logging purposes.&lt;br /&gt;
&lt;br /&gt;
===strideCreateIMThread(name)===&lt;br /&gt;
&lt;br /&gt;
This is a macro that wraps the invocation of &amp;lt;tt&amp;gt;strideCreateThread()&amp;lt;/tt&amp;gt; for intercept module entry point functions. Only the IM name must be provided.&lt;br /&gt;
&lt;br /&gt;
===void strideStopThread(srDWORD id)===&lt;br /&gt;
&lt;br /&gt;
Signals a thread to stop (sends palSTOP_EVENT) and joins it.&lt;br /&gt;
&lt;br /&gt;
===void strideExWaitForExit(void)===&lt;br /&gt;
&lt;br /&gt;
This function can be called by the main application thread to block until the application is shutdown. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This function is optional - if you block some other way (e.g. create the application&#039;s message loop) do not call this function.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===void strideExSetupMainWindow(const char* name, void* instance, int showCmd)===&lt;br /&gt;
&lt;br /&gt;
This function is called by applications to create the main window of the process. The first argument specifies a name of the window. The second argument specifies the handle to the current instance of the application. And the third specifies how the window is to be shown.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;This function is optional - if you create the application&#039;s main window do not call this function.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=Target Integration=&lt;br /&gt;
&lt;br /&gt;
Here are a few examples of how to integrate the stride API into your application.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; the following code assumes that the intercept module was generated with a name of &#039;&#039;myintercept&#039;&#039;.  Change all references to that name in your code to the chosen intercept module name.&lt;br /&gt;
&lt;br /&gt;
===Standalone Application Integration===&lt;br /&gt;
&lt;br /&gt;
The following code demonstrates how to integrate your application with the STRIDE Runtime. Your application might require other logic at startup - you can integrate the following calls according to your needs. Note that this code initializes the STRIDE subsystem and assumes a single standalone process that creates the STRIDE system threads as well as application threads. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;tchar.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stride.h&amp;gt;&lt;br /&gt;
#include &amp;quot;myinterceptIMEntry.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int _tmain(int argc, _TCHAR* argv[])&lt;br /&gt;
{&lt;br /&gt;
    /* initialize the STRIDE subsytem using default I/O */&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
    strideIO_t io = {strideIO_t::strideDEFAULT};&lt;br /&gt;
#else&lt;br /&gt;
    strideIO_t io = {strideDEFAULT};&lt;br /&gt;
#endif&lt;br /&gt;
    if (strideInit(&amp;amp;io) != srTRUE)&lt;br /&gt;
        return -1;&lt;br /&gt;
&lt;br /&gt;
    /* start all IM threads */&lt;br /&gt;
    if (strideCreateIMThread(myintercept) != srTRUE)&lt;br /&gt;
        return -1;&lt;br /&gt;
&lt;br /&gt;
    /* application code here */&lt;br /&gt;
    strideExWaitForExit(); /* or block some other way (e.g. application&#039;s message loop) */&lt;br /&gt;
&lt;br /&gt;
    /* stop all IM threads and uninitialize STRIDE subsystem */&lt;br /&gt;
    strideUninit();&lt;br /&gt;
    return 0;   &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sample code assumes you have generated your Intercept Module with a prefix name of &#039;&#039;&#039;myintercept&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; If you need to provide additional message processing threads, you can call &amp;lt;tt&amp;gt;strideCreateThread()&amp;lt;/tt&amp;gt; for each additional thread that you wish to add (this must be called prior to your application code).&lt;br /&gt;
&lt;br /&gt;
===Multiprocess Application Integration===&lt;br /&gt;
&lt;br /&gt;
This code demonstrates how to integrate your application with the STRIDE Runtime in multiprocess mode. In this mode, the pre-packaged strideDaemon runs simultaneously with the application and provides the STRIDE IO and runtime thread initialization. The host communicates with the application process through the strideDaemon (or another STRIDE IO process). In this sample, the only difference with the preceding sample is the call to strideInit which, in this case, specifies no IO parameters which indicates to the API that the communication and runtime threads should not be started.   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;tchar.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stride.h&amp;gt;&lt;br /&gt;
#include &amp;quot;myinterceptIMEntry.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int _tmain(int argc, _TCHAR* argv[])&lt;br /&gt;
{&lt;br /&gt;
    if (strideInit(NULL) != srTRUE)&lt;br /&gt;
        return -1;&lt;br /&gt;
&lt;br /&gt;
    if (strideCreateIMThread(myintercept) != srTRUE)&lt;br /&gt;
        return -1;&lt;br /&gt;
&lt;br /&gt;
    strideExWaitForExit();&lt;br /&gt;
&lt;br /&gt;
    strideUninit();&lt;br /&gt;
    return 0;   &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Kernel Module Integration===&lt;br /&gt;
&lt;br /&gt;
The following code demonstrates how to integrate your kernel space module with the STRIDE Runtime. Your module might require other logic at startup - you can integrate the following calls according to your needs. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; You need to also have an active user space STRIDE enabled application (see [[#Standalone_Application_Integration | above]]) that runs the core STRIDE Runtime and IO services. That application must also link to the STRIDE Runtime built with &amp;lt;tt&amp;gt;-DPAL_KERNEL_SHM_SIZE=nnnn&amp;lt;/tt&amp;gt;, where the &amp;quot;nnnn&amp;quot; matches the value defined below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#if defined(STRIDE_ENABLED) &amp;amp;&amp;amp; STRIDE_ENABLED&lt;br /&gt;
#define PAL_KERNEL_SHM_SIZE 2048 /* value should match whatever is defined in the &amp;quot;user&amp;quot; STRIDE Runtime */&lt;br /&gt;
#define PAL_KERNEL_DRV_NAME &amp;quot;DRV&amp;quot; /* set to whatever your driver name is */&lt;br /&gt;
#define __KERNEL__&lt;br /&gt;
#include &amp;lt;stride.c&amp;gt; /* that&#039;s right, directly include the source file */ &lt;br /&gt;
#undef __KERNEL__&lt;br /&gt;
#endif /* STRIDE_ENABLED */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Wdm.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
NTSTATUS DriverEntry(&lt;br /&gt;
  __in  struct _DRIVER_OBJECT *DriverObject,&lt;br /&gt;
  __in  PUNICODE_STRING RegistryPath&lt;br /&gt;
  )&lt;br /&gt;
{&lt;br /&gt;
...&lt;br /&gt;
#if defined(STRIDE_ENABLED) &amp;amp;&amp;amp; STRIDE_ENABLED&lt;br /&gt;
    strideInit(NULL);&lt;br /&gt;
#endif /* STRIDE_ENABLED */&lt;br /&gt;
...&lt;br /&gt;
    return status;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
VOID DriverUnload(&lt;br /&gt;
  __in  struct _DRIVER_OBJECT *DriverObject&lt;br /&gt;
  )&lt;br /&gt;
{&lt;br /&gt;
#if defined(STRIDE_ENABLED) &amp;amp;&amp;amp; STRIDE_ENABLED&lt;br /&gt;
    strideUninit();&lt;br /&gt;
#endif /* STRIDE_ENABLED */&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You don&#039;t need to compile any other source nor to link to any other library. Just make sure you pass the following extra flags to your compiler:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C_DEFINES = $(C_DEFINES) -DSTRIDE_ENABLED=1 -DSTRIDE_STATIC&lt;br /&gt;
INCLUDES = $(INCLUDES); $(STRIDE_DIR)\SDK\Windows\src; $(STRIDE_DIR)\SDK\Runtime&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Windows PAL=&lt;br /&gt;
&lt;br /&gt;
===PAL Configuration (palcfg.h)===&lt;br /&gt;
The following parameters can be configured in &#039;&#039;palcfg.h&#039;&#039; to effect the behavior of the compiled pal source files.&lt;br /&gt;
&lt;br /&gt;
; PAL_DEFAULT_DEVICE_NAME : default IO device to use.&lt;br /&gt;
; PAL_MAX_THREADS : max STRIDE integrated threads that can be managed by the STRIDE API.&lt;br /&gt;
; PAL_MAX_TIMERS : max STRIDE timers that can be active in the system.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14720</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14720"/>
		<updated>2020-12-10T18:46:30Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86_64)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-x86_64-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;===&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;===&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only the versions 5.16.x, 5.18.x, 5.20.x, 5.22.x, 5.24.x and 5.26.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use one of the &#039;&#039;&#039;32-bit&#039;&#039;&#039; (with USE_64_BIT_INT) Perl distributions from [http://strawberryperl.com/releases.html Strawberry Perl] (or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]).&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
For Strawberry Perl, simplest method for installing packages is via the &amp;lt;tt&amp;gt;cpanm.bat&amp;lt;/tt&amp;gt; utility script. To install the latest stable version of PACKAGE_NAME (the package to install) simply execute:&lt;br /&gt;
&lt;br /&gt;
 cpanm.bat PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
For ActiveState Perl, you can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version (or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]).&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=S2scompile&amp;diff=14719</id>
		<title>S2scompile</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=S2scompile&amp;diff=14719"/>
		<updated>2020-08-06T18:19:07Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* The SCL Compiler Utility */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
== The SCL Compiler Utility ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;s2scompile&#039;&#039;&#039; executable will compile a set of scl files (C/C++ source files with [[SCL Pragmas]]) and produce a &amp;lt;tt&amp;gt;.meta&amp;lt;/tt&amp;gt;  file for each (assuming that compilation is successful).&amp;lt;ref&amp;gt;.meta files are binary-format intermediate files suitable for input to the [[s2sbind]] utility.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All warnings and errors that occur during the compilation are written to the standard output device. The compilation for a particular file is considered successful if no errors occur. Otherwise it is unsuccessful. Unsuccessful compilations do not yield &amp;lt;tt&amp;gt;.meta&amp;lt;/tt&amp;gt; files.&lt;br /&gt;
 &lt;br /&gt;
Options are validated and any incorrect options diagnosed will result in compilation process failure.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
    s2scompile [&amp;lt;i&amp;gt;options&amp;lt;/i&amp;gt;] &amp;lt;i&amp;gt;scl_file1&amp;lt;/i&amp;gt; [&amp;lt;i&amp;gt;scl_fileN&amp;lt;/i&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Options ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;background-color:#ffffcc;&amp;quot;   &lt;br /&gt;
!width=&amp;quot;200pt&amp;quot;|&#039;&#039;&#039;Option&#039;&#039;&#039;&lt;br /&gt;
!width=&amp;quot;500pt&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--version&#039;&#039;&#039;&lt;br /&gt;
| Print version information.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--preprocess&#039;&#039;&#039;&lt;br /&gt;
| Do preprocessing only. Write preprocessed text file to the output.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--dependencies&#039;&#039;&#039;&lt;br /&gt;
| Do preprocessing only. Instead of the normal preprocessing output, generate in the preprocessing output file a list of dependency lines suitable for input to the UNIX make program. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_line_commands&#039;&#039;&#039;&lt;br /&gt;
| Same as &#039;&#039;&#039;–-preprocess&#039;&#039;&#039; except that line number information is removed from the preprocessed output files.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--c++&#039;&#039;&#039;&lt;br /&gt;
| Enable compilation of c++. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--c&#039;&#039;&#039;&lt;br /&gt;
| Enable compilation of C (specifically C89). This is the default.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--include_directory=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;--sys_include=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-I&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Add dir to the end of the list of directories searched for &amp;lt;tt&amp;gt;#include&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_stdinc&#039;&#039;&#039;&lt;br /&gt;
| Do not search the standard system directories for header files. See [[#Search Path|Search Path]] for details.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--define_macro=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;[&#039;&#039;&#039;(&#039;&#039;&#039;&amp;lt;i&amp;gt;parameter-list&amp;lt;/i&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;][&#039;&#039;&#039;=&#039;&#039;&#039;&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;[&#039;&#039;&#039;(&#039;&#039;&#039;&amp;lt;i&amp;gt;parameter-list&amp;lt;/i&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;][&#039;&#039;&#039;=&#039;&#039;&#039;&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;]&lt;br /&gt;
| Define macro &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt; as &amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;. If &amp;quot;=&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;&amp;quot; is omitted, define &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt; as 1.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--undefine_macro=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-U&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Remove predefined macro &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--preinclude=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;file&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Include file at the beginning of compilation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;NOTE:&#039;&#039;&#039; To simplify the integration in existing build environments other standard compiler options (e.g. GCC [https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html -include&amp;lt;file&amp;gt;], MSVC [https://docs.microsoft.com/en-us/cpp/build/reference/fi-name-forced-include-file /FI@&amp;lt;file&amp;gt;]) with similar meaning are also recognized and processed the same way.&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--compatibility=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;string&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Vendor compatibility mode. String can be &amp;quot;microsoft&amp;quot;, &amp;quot;generic&amp;quot; or &amp;quot;gnu&amp;quot;. Default is &amp;quot;generic&amp;quot;. When &amp;quot;Microsoft&amp;quot; is set, the compiler supports a number of extensions to the C or C++ language that are compatible with the Microsoft family of compilers. &amp;quot;gnu&amp;quot; - instructs the compiler to support language extensions compatible with the Gnu family of compilers.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_warning&#039;&#039;&#039;&lt;br /&gt;
| Suppress all warnings in the compilation phase.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--macros&#039;&#039;&#039;&lt;br /&gt;
| Resolve macro (preprocessor define) constant value. Pass this flag only if you intend to do script based testing.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--documentation&#039;&#039;&#039;&lt;br /&gt;
| Extract [https://en.wikipedia.org/wiki/Doxygen doxygen style] source documentation. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--output=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-o&#039;&#039;&#039;&amp;lt;path&amp;gt;&lt;br /&gt;
| Output file or directory. The default is the current directory.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_big_endian&#039;&#039;&#039;&lt;br /&gt;
| Target uses a big endian by representation. The default is little endian.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_plain_char_is_unsigned&#039;&#039;&#039;&lt;br /&gt;
| Target uses unsigned chars to represent “plain” char. The default is signed.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_adaptive_enum&#039;&#039;&#039;&lt;br /&gt;
| Target has adaptive enums. The default is no adaptive enums.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_pack_alignment=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target struct pack alignment. The default is 16. Possible values are 1, 2, 4, 8 or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_char=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target platform size of char. Default is 1. Possible values are 1, 2, 4, 8, or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_char=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target platform alignment of char. Default is 1. Possible values are 1, 2, 4, 8 or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_short=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 2.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_short=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 2.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_int=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_int=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_float=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_float=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_bool_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;char&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_wchar_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;unsigned short&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_size_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;unsigned int&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_ptrdiff_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;int&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--options_file=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;file&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| A file that contains command line options. The format is the same as the command line with the only addition that it could be split on multiple lines. A line starting with &amp;quot;#&amp;quot; or &amp;quot;;&amp;quot; symbol is ignored.&lt;br /&gt;
This option is necessary if the length of the command line string exceeds system limits. Otherwise it is provided only as a convenience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;NOTE:&#039;&#039;&#039; To simplify the integration in existing build environments other standard compiler options (e.g. ARM [https://www.keil.com/support/man/docs/armcc/armcc_chr1359124949735.htm --via=&amp;lt;file&amp;gt;], GCC [https://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html @&amp;lt;file&amp;gt;], MSVC [https://docs.microsoft.com/en-us/cpp/build/reference/at-specify-a-compiler-response-file @&amp;lt;file&amp;gt;]) with similar meaning are also recognized and processed the same way.&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The [[Framework_Setup#SDK|standard Platform SDKs]] shipped with the Framework contain a set of options files with predefined target settings for several popular CPUs. Please consider using one of them instead of explicitly passing &amp;lt;tt&amp;gt;--targ_*&amp;lt;/tt&amp;gt; options on the command line.&lt;br /&gt;
&lt;br /&gt;
=== Search Path ===&lt;br /&gt;
&amp;lt;b&amp;gt;s2scompile&amp;lt;/b&amp;gt; by default looks in several different places for headers. It looks for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt; in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$(STRIDE_DIR)/SDK/Runtime&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where $(STRIDE_DIR) is the location where the STRIDE packages are installed following [[Framework_Setup#Directories_and_Files|recommended directory layout]].&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;i&amp;gt;microsoft&amp;lt;/i&amp;gt; mode is specified and $(INCLUDE) enviroment variable is defined (as a &amp;quot;;&amp;quot; separated path list) then all of its entries are looked in for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;i&amp;gt;gnu&amp;lt;/i&amp;gt; mode is specified and $(CPATH) and/or $(C_INCLUDE_PATH) (or $(CPLUS_INCLUDE_PATH) for C++) enviroment variables are defined (as a &amp;quot;:&amp;quot; separated path list) then all of its entries are looked in for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt;. In addition if $(TARGET_CPP) specifies the target GNU &amp;lt;tt&amp;gt;cpp&amp;lt;/tt&amp;gt; (GCC preprocessor or a command line equivalent) it is queried and any given path by it is looked in.&lt;br /&gt;
&lt;br /&gt;
You can add to this list, before any of the default places, by using the &amp;lt;tt&amp;gt;-I&amp;lt;dir&amp;gt;&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
 &lt;br /&gt;
You can prevent s2scompile from searching any of the default directories with the &amp;lt;tt&amp;gt;--no_stdinc&amp;lt;/tt&amp;gt; option. &amp;lt;tt&amp;gt;-I&amp;lt;/tt&amp;gt; options are not ignored as described above when &amp;lt;tt&amp;gt;--no_stdinc&amp;lt;/tt&amp;gt; is in effect. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;s2scompile&amp;lt;/b&amp;gt; looks for headers requested with &amp;lt;tt&amp;gt;#include &amp;quot;file&amp;quot;&amp;lt;/tt&amp;gt; first in the directory containing the current file, then in the same places it would have looked for a header requested with angle brackets.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Refer to the [[Build_Tools#Compiling_multiple_files|Compiling]] section of the Build Tools Examples.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Build_Tools]]&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Double&amp;diff=14718</id>
		<title>Test Double</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Double&amp;diff=14718"/>
		<updated>2020-07-08T22:33:33Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
The &#039;&#039;Test Double&#039;&#039; feature provides a means for intercepting C/C++ language &#039;&#039;&#039;global functions&#039;&#039;&#039; on the target, and directing the call to a substitute function with identical parameters and return value. The use case is a unit test where the function under test uses a function during its execution, and this dependency is simulated by a substitute or double function during testing. The unit test is able to control the substitution of the dependency during run time, and thereby verify the behavior of the function under test.&lt;br /&gt;
The following sample illustrates the relationship of the function under test and a dependency:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// depend.h&lt;br /&gt;
int depend(int x);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// depend.c&lt;br /&gt;
#include &amp;quot;depend.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
int depend(int x)&lt;br /&gt;
{&lt;br /&gt;
    return x + x;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// fut.h&lt;br /&gt;
int fut(int x, int y);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// fut.c&lt;br /&gt;
#include &amp;quot;fut.h&amp;quot;&lt;br /&gt;
#include &amp;quot;depend.h&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
int fut(int x, int y)&lt;br /&gt;
{&lt;br /&gt;
    return depend(x) * y;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the above sample, &#039;&#039;fut()&#039;&#039; is the function under test and &#039;&#039;depend()&#039;&#039; is a dependency candidate for doubling.&lt;br /&gt;
&lt;br /&gt;
The steps required to achieve doubling of a dependency function are as follows:&lt;br /&gt;
#[[#Configuring the Double Using Function Pragma | Configuring the Double Using Function Pragma]] &lt;br /&gt;
#[[#Creating_Double_Intercepts_in_the_IM|Create Double Intercepts in the IM]]&lt;br /&gt;
#[[#Switching_the_Double_Function_During_Runtime|Switch Double Function During Runtime]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Configuring the Double Using Function Pragma==&lt;br /&gt;
&lt;br /&gt;
The syntax of the [[Scl_function|function pragma]] supports a set of &#039;&#039;&#039;&#039;&#039;optional&#039;&#039;&#039;&#039;&#039; attributes that allow the specification of function interception parameters. When captured for the purpose of interception (&#039;&#039;&#039;intercept-able&#039;&#039;&#039;) the optional arguments are &#039;&#039;&#039;required&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_function(function-name [,context, name-mangling, group-id])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Refer to the actual [[Scl_function | function pragma]] definition for an explanation of &lt;br /&gt;
* &#039;&#039;&#039;context&#039;&#039;&#039; - set to &#039;&#039;DEFINITION&#039;&#039; or &#039;&#039;REFERENCE&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;name-mangling&#039;&#039;&#039; - set to &#039;&#039;EXPLICIT&#039;&#039; or &#039;&#039;IMPLICIT&#039;&#039;. Note if set to explicit requires usage of the &#039;&#039;srTEST_INTERCEPT&#039;&#039; macro&lt;br /&gt;
* &#039;&#039;&#039;group-id&#039;&#039;&#039; - user defined to enable or disable interception&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the above sample, &#039;&#039;depend()&#039;&#039; needs to be captured via the pragma and enabled for interception in the following manner.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// depend_scl.h&lt;br /&gt;
#include &amp;quot;depend.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#pragma scl_function(depend, &amp;quot;DEFINITION&amp;quot;, &amp;quot;IMPLICIT&amp;quot;, &amp;quot;TEST_GROUP&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Creating Double Intercepts in the IM==&lt;br /&gt;
If a function has been configured as a double candidate using the function pragma as outlined in the above step, the [[Build_Tools|Stride Build Tools]] will automatically create the [[Intercept Module]], aka IM, that contains the intercept for the double function. This all happens automatically during the build process. &lt;br /&gt;
&lt;br /&gt;
But to enable the interception the source file containing the &amp;lt;tt&amp;gt;depend()&amp;lt;/tt&amp;gt; implementation &#039;&#039;&#039;must be altered&#039;&#039;&#039; to [[Name_Mangling|mangle the function&#039;s name]] by defining the Group ID and including the generated Intercept Module header file (xxxIM.h):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// depend.c&lt;br /&gt;
#include &amp;quot;depend.h&amp;quot;&lt;br /&gt;
/* define the Group ID before including the IM header */&lt;br /&gt;
#define TEST_GROUP&lt;br /&gt;
#include &amp;quot;strideIM.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int depend(int x)&lt;br /&gt;
{&lt;br /&gt;
    return x + x;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Switching the Double Function During Runtime==&lt;br /&gt;
In the context of the test unit code the following STRIDE runtime macros, defined in the STRIDE runtime header file &#039;&#039;&#039;srtest.h&#039;&#039;&#039;, could be used for substituting a stub function for a double candidate.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
srDOUBLE_SET(fn, fnDbl)&lt;br /&gt;
srDOUBLE_RESET(fn)&lt;br /&gt;
&lt;br /&gt;
srDOUBLE_GET(fn, pfnDbl) // used for more advanced scenarios &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where:&lt;br /&gt;
*&#039;&#039;&#039;fn&#039;&#039;&#039; is the function qualified by &amp;lt;tt&amp;gt;scl_function&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;scl_func&amp;lt;/tt&amp;gt; as a dependency candidate, as above.&lt;br /&gt;
*&#039;&#039;&#039;pfnDbl&#039;&#039;&#039; is a pointer to a object of type &amp;lt;tt&amp;gt;srFunctionDouble_t&amp;lt;/tt&amp;gt;, declared to hold the current value of the active double function.&lt;br /&gt;
*&#039;&#039;&#039;fnDbl&#039;&#039;&#039; is a function that is to be the current active double. &#039;&#039;The function passed in should &#039;&#039;&#039;always&#039;&#039;&#039; match the signature of the dependency candidate specified by &#039;&#039;&#039;fn&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039;&#039;&#039; the initial value of the current active double is always the dependency candidate function.&lt;br /&gt;
&lt;br /&gt;
=== Example 1 ===&lt;br /&gt;
The following example shows how to double a routine for the lifetime of a C++ Test Unit:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
#include &amp;quot;fut.h&amp;quot;&lt;br /&gt;
#include &amp;quot;depend.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
extern &amp;quot;C&amp;quot; int depend_dbl(int a) { return a * a; }&lt;br /&gt;
&lt;br /&gt;
class Test: public stride::srTest&lt;br /&gt;
{ &lt;br /&gt;
public:&lt;br /&gt;
&lt;br /&gt;
    Test()&lt;br /&gt;
    {&lt;br /&gt;
        srDOUBLE_SET(depend, depend_dbl);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    ~Test()&lt;br /&gt;
    {&lt;br /&gt;
        srDOUBLE_RESET(depend);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    void test1(void) { srASSERT_EQ(fut(1, 2), 2); }&lt;br /&gt;
    void test2(void) { srASSERT_EQ(fut(5, 6), 150); }&lt;br /&gt;
};&lt;br /&gt;
 &lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_class(Test)&lt;br /&gt;
#pragma scl_function(depend, &amp;quot;DEFINITION&amp;quot;, &amp;quot;IMPLICIT&amp;quot;, &amp;quot;TEST_GROUP&amp;quot;)&lt;br /&gt;
#endif &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example 2 ===&lt;br /&gt;
The following example shows how to make a call to the original routine in the context of a double by safely handling any nested doubling:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
#include &amp;quot;depend.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
extern &amp;quot;C&amp;quot; int depend_dbl(int a) &lt;br /&gt;
{&lt;br /&gt;
    int ret;&lt;br /&gt;
&lt;br /&gt;
    srFunctionDouble_t fn;&lt;br /&gt;
    srDOUBLE_GET(depend, &amp;amp;fn);&lt;br /&gt;
    srDOUBLE_RESET(depend);&lt;br /&gt;
    ret = depend(a);&lt;br /&gt;
    srDOUBLE_SET(depend, fn);&lt;br /&gt;
    &lt;br /&gt;
    return ret; &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14717</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14717"/>
		<updated>2020-07-08T20:10:46Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86_64)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-x86_64-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;==&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only the versions 5.16.x, 5.18.x, 5.20.x, 5.22.x, 5.24.x and 5.26.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use one of the &#039;&#039;&#039;32-bit&#039;&#039;&#039; (with USE_64_BIT_INT) Perl distributions from [http://strawberryperl.com/releases.html Strawberry Perl] (or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]).&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
For Strawberry Perl, simplest method for installing packages is via the &amp;lt;tt&amp;gt;cpanm.bat&amp;lt;/tt&amp;gt; utility script. To install the latest stable version of PACKAGE_NAME (the package to install) simply execute:&lt;br /&gt;
&lt;br /&gt;
 cpanm.bat PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
For ActiveState Perl, you can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version (or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]).&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14716</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14716"/>
		<updated>2020-07-08T20:10:18Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86_64)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-x86_64-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;==&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only the versions 5.16.x, 5.18.x, 5.20.x, 5.22.x, 5.24.x and 5.26.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use one of the &#039;&#039;&#039;32-bit&#039;&#039;&#039; (with USE_64_BIT_INT) Perl distributions from [http://strawberryperl.com/releases.html Strawberry Perl] (or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]).&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
For Strawberry Perl, simplest method for installing packages is via the &amp;lt;tt&amp;gt;cpanm.bat&amp;lt;/tt&amp;gt; utility script. To install the latest stable version of PACKAGE_NAME (the package to install) simply execute:&lt;br /&gt;
&lt;br /&gt;
 cpanm.bat PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
For ActiveState Perl, you can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version (or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]).&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14715</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14715"/>
		<updated>2020-07-08T19:21:57Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Perl Installation (Optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86_64)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-x86_64-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;==&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only the versions 5.16.x, 5.18.x, 5.20.x, 5.22.x, 5.24.x and 5.26.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use one of the &#039;&#039;&#039;32-bit&#039;&#039;&#039; (with USE_64_BIT_INT) Perl distributions from [http://strawberryperl.com/releases.html Strawberry Perl] (or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]).&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
For Strawberry Perl, simplest method for installing packages is via the &amp;lt;tt&amp;gt;cpanm.bat&amp;lt;/tt&amp;gt; utility script. To install the latest stable version of PACKAGE_NAME (the package to install) simply execute:&lt;br /&gt;
&lt;br /&gt;
 cpanm.bat PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
For ActiveState Perl, you can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]. &lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14714</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14714"/>
		<updated>2020-06-23T02:44:27Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Minor and Patch releases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile Clang extensions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrect handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;inline namespace&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;nodiscard&amp;quot; attribute in Microsoft mode.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile forward-declared &amp;quot;enum&amp;quot; in Microsoft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14713</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14713"/>
		<updated>2020-06-23T02:44:12Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Minor and Patch releases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile Clang extensions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrect handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;inline namespace&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;[[nodiscard]]&amp;quot; attribute in Microsoft mode.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile forward-declared &amp;quot;enum&amp;quot; in Microsoft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14712</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14712"/>
		<updated>2020-06-23T02:42:25Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile Clang extensions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrect handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;inline namespace&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;attributes&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile forward-declared &amp;quot;enum&amp;quot; in Microsoft mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14711</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14711"/>
		<updated>2020-06-23T02:41:14Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile Clang extensions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrect handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.03a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;inline namespace&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile C+11 &amp;quot;attributes&amp;quot;.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile forward-declared &amp;quot;enum&amp;quot; in Microsoft mode.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14710</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14710"/>
		<updated>2019-06-19T21:45:39Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Perl Installation (Optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86_64)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-x86_64-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;==&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only the versions 5.16.x, 5.18.x, 5.20.x, 5.22.x, 5.24.x and 5.26.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use one of the &#039;&#039;&#039;32-bit&#039;&#039;&#039; (with USE_64_BIT_INT) Perl distributions from [http://strawberryperl.com/releases.html Strawberry Perl].&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
You can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]. &lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14709</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14709"/>
		<updated>2019-06-19T21:35:58Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Perl Installation (Optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86_64)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-x86_64-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;==&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only the versions 5.16.x, 5.18.x, 5.20.x, 5.22.x, 5.24.x and 5.26.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use one of the &#039;&#039;&#039;32-bit&#039;&#039;&#039; (with USE_64_BIT_INT) Perl distributions from [http://strawberryperl.com/releases.html Strawberry Perl] or [http://www.activestate.com/activeperl/downloads ActiveState].&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
You can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]. &lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14708</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14708"/>
		<updated>2019-03-19T21:43:12Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.03x =&lt;br /&gt;
The code name for this release is &#039;&#039;Jetties&#039;&#039;. Released on Mar 8, 2019. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is enabled to compile Clang extentions.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is enabled to process &amp;quot;char16_t&amp;quot; and &amp;quot;char32_t&amp;quot; C++11 types.&lt;br /&gt;
* [[Perl_Script_APIs|Test Script Constants]] are not accessible.&lt;br /&gt;
* In [[Test_Script|Test Scripts]], ASSERT in fixtures is incorrect handled.&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been limited to only publishing results. Only local Schema file execution is supported but deprecated. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl versions 5.24 and 5.26. &lt;br /&gt;
* Support for Perl versions 5.20 and older is not provided by default but is available on demand. &lt;br /&gt;
* In payload, OUT strings are now expected to be passed by &amp;quot;ref&amp;quot;. Passing as &amp;quot;array of chars&amp;quot; is not supported anymore. &lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* [[Test_Macros|Test Skip Macro]] has been implemented. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.03x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.03&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Testspace integration ===&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifier.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Documentation_in_C/C%2B%2B&amp;diff=14707</id>
		<title>Test Documentation in C/C++</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Documentation_in_C/C%2B%2B&amp;diff=14707"/>
		<updated>2018-12-28T19:03:46Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Stride provides an integrated solution for automatically extracting  documentation for your test units using the well-known [https://en.wikipedia.org/wiki/Doxygen doxygen format]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Test documentation&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source  lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
/*! This Suite does lots .. */  &lt;br /&gt;
class MyTest {&lt;br /&gt;
public: &lt;br /&gt;
    /*! Check on Foo .. */&lt;br /&gt;
    void CheckFoo();&lt;br /&gt;
    /*! Check on Boo .. */&lt;br /&gt;
    void CheckBoo();&lt;br /&gt;
};&lt;br /&gt;
#pragma scl_test_class(MyTest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to enable test unit documentation, here is summary of the necessary steps:&lt;br /&gt;
* document your test unit source with [http://www.doxygen.nl/manual/docblocks.html doxygen] formatted blocks. Since only header files are typically passed to the [[S2scompile|Stride  Compiler]], we recommend you place your documentation in the header file. &lt;br /&gt;
* configure your build/make process to call the [[S2scompile|Stride Compiler]] with the additional &#039;&#039;&#039;--documentation&#039;&#039;&#039; flag. If you are using one of our preconfigured makefiles in a sandbox environment, this option has already been enabled.&lt;br /&gt;
* run your build process to produce a Stride database and Stride enabled target application.&lt;br /&gt;
* start your application and execute the [[Stride Runner]] to connect and run the tests.&lt;br /&gt;
* The generated report will contain description information for the test suites and test cases generated from the doxygen blocks.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Doxygen&#039;&#039;&#039; has a rich set of tags  and formatting options aimed at comprehensive  source documentation. The Stride test framework uses doxygen on a per-file  basis to extract standalone  documentation for individual test units and  their methods. As such, we  only support limited set of doxygen  features in the code documentation. The Stride test framework supports the  following doc formatting:&lt;br /&gt;
* custom HTML formatting&lt;br /&gt;
* lists (ordered, unordered, definition)&lt;br /&gt;
* code blocks&lt;br /&gt;
* bold and emphasis text&lt;br /&gt;
More advanced doxygen formatting tags (such as tables and parameter lists) are not supported at this time, but will likely be in future releases.&lt;br /&gt;
&lt;br /&gt;
For more information on Doxygen formatting, see [http://www.doxygen.nl/manual/docblocks.html]&lt;br /&gt;
&lt;br /&gt;
== Test Classes ==&lt;br /&gt;
Source documentation is generally straight-foward, with doc blocks preceding the corresponding class and method declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#pragma once&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 /*! Brief description for MyTestUnit (optional)&lt;br /&gt;
    More detailed documentation goes here.&lt;br /&gt;
    &amp;lt;a href=&amp;quot;http:\\myinfo.mysite.com\MyTestUnit.html&amp;quot;&amp;gt;More Info&amp;lt;/a&amp;gt;&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
class MyTestClass&lt;br /&gt;
{&lt;br /&gt;
  public:&lt;br /&gt;
    /*! &lt;br /&gt;
       Description for Test_1 here.  &lt;br /&gt;
    */&lt;br /&gt;
    bool Test_1();&lt;br /&gt;
    &lt;br /&gt;
    /*! &lt;br /&gt;
       Description for Test_2 here.  &lt;br /&gt;
    */&lt;br /&gt;
    bool Test_2();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_class(MyTestClass)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test C-Classes ==&lt;br /&gt;
Source documentation must relate to the structure that is used as the &amp;quot;C-Class&amp;quot; for the test unit. Since a C-Class uses function pointers to call its individual tests, test method documentation &#039;&#039;&#039;must&#039;&#039;&#039; be associated with the corresponding structure function pointer member. As such, method documentation for C-Classes must be in the header file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#pragma once&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/*! Brief description for my_c_class(optional)&lt;br /&gt;
   More detailed documentation goes here.&lt;br /&gt;
*/&lt;br /&gt;
typedef   struct my_c_class&lt;br /&gt;
{&lt;br /&gt;
    /*! &lt;br /&gt;
       Description for Test_1 here.  &lt;br /&gt;
    */&lt;br /&gt;
    int (*Test_1)(struct my_c_class* pcc);&lt;br /&gt;
    &lt;br /&gt;
    /*! &lt;br /&gt;
       Description for Test_2 here.  &lt;br /&gt;
    */  &lt;br /&gt;
    int (*Test_2)(struct my_c_class* pcc);&lt;br /&gt;
} my_c_class;&lt;br /&gt;
&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
extern &amp;quot;C&amp;quot; {&lt;br /&gt;
#endif&lt;br /&gt;
void  my_c_class_init(struct my_c_class* pcc);&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_cclass(my_c_class, my_c_class_init)&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Test FLists ==&lt;br /&gt;
Since F-Lists have no specific storage entity (class or struct) to which they are associated. As such, the only way to provide unit-level documentation for FLists is to document the source file in which its methods are declared. The unit documentation is associated with its file using the &#039;&#039;&#039;\flist&#039;&#039;&#039; tag. Because of this restriction, we recommend that you generally confine each Test FList to it&#039;s own source file pair (.h and .c). The test methods  associated  with an FList are documented as expected, with the documentation block preceding the function declaration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(source file name is &#039;&#039;my_flist.h&#039;&#039; in the example below)&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#pragma once&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
extern &amp;quot;C&amp;quot; {&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
/*! &lt;br /&gt;
\flist my_flist.h&lt;br /&gt;
\brief Summary description for my_flist(optional)&lt;br /&gt;
More detailed documentation goes here.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
/*! &lt;br /&gt;
   Description for Test_1 here.  &lt;br /&gt;
*/&lt;br /&gt;
int Test_1();&lt;br /&gt;
&lt;br /&gt;
/*! &lt;br /&gt;
   Description for Test_2 here.  &lt;br /&gt;
*/&lt;br /&gt;
int Test_2();&lt;br /&gt;
&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_flist(&amp;quot;my_flist&amp;quot;, Test_1, Test_2)&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Training_Tests_in_C/C%2B%2B&amp;diff=14706</id>
		<title>Training Tests in C/C++</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Training_Tests_in_C/C%2B%2B&amp;diff=14706"/>
		<updated>2018-12-28T19:01:59Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* test_in_c_cpp/TestClass */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Background ==&lt;br /&gt;
&lt;br /&gt;
The STRIDE Framework provides support for implementation of tests in the native C/C++ of the device under test. Once written, these tests are compiled using the device toolchain and are harnessed, via the [[Intercept Module|STRIDE Intercept Module]], into one or more applications under test on the device. These tests have the unique advantage of executing in real-time on the device itself, allowing the tests to operate under actual device conditions during test.&lt;br /&gt;
&lt;br /&gt;
Please review the following reference articles before proceeding: &lt;br /&gt;
&lt;br /&gt;
* [[Test Units Overview|Overview]]&lt;br /&gt;
* [[Test Units]]&lt;br /&gt;
* [[Test Macros]]&lt;br /&gt;
* [[Test Point Testing in C/C++|Test Point Testing]]&lt;br /&gt;
* [[Test API | Test APIs]]&lt;br /&gt;
&lt;br /&gt;
== Why would I want to write tests in native code ? ==&lt;br /&gt;
&lt;br /&gt;
Here are some of the scenarios for which on-target test harnessing is particularly advantageous:&lt;br /&gt;
&lt;br /&gt;
* direct API testing. If you want to validate native APIs by driving the APIs directly, native code is the simplest way to do so. STRIDE provides convenient [[Test Macros|assertion macros]] to validate your variable states. API testing can also be combined with native test point tests (using [[Test Point]] instrumentation) to provide deeper validation of expected behavior of the units under test.&lt;br /&gt;
* unit testing of C objects or C++ classes. The STRIDE native tests execute in the same context as the rest of your code, so it&#039;s possible to fully unit test any objects that can be created in your actual application code.&lt;br /&gt;
* validation logic that requires sensitive timing thresholds. Sometimes  it&#039;s only possible to validate tight timing scenarios on-target.&lt;br /&gt;
* high-volume data processing scenarios. In some cases, the volume of data being processed and validated for a particular test scenario is to large to be easily handled by an off-target harness. In that case, native test units provide a convenient way to write tests that validate that data without shipping the data to the host during testing.&lt;br /&gt;
&lt;br /&gt;
What&#039;s more, you might simply &#039;&#039;prefer&#039;&#039; to write your test logic in C or C++ (as opposed to perl on the host). If that&#039;s the case, we don&#039;t discourage you from using a toolset that your more comfortable with - particularly if it enables you to start writing tests without a new language learning curve.&lt;br /&gt;
&lt;br /&gt;
== Are there any disadvantages ? ==&lt;br /&gt;
&lt;br /&gt;
Sure. Most of the disadvantages of native on-target tests concern the device build process. If your device build is particularly slow (on the order of hours or days), then adding and running new tests can become a tedious waiting game. Testing is always well served by shorter build cycles, and on-target tests are particularly sensitive to this. &lt;br /&gt;
&lt;br /&gt;
In some cases, the additional code space requirements of native tests is a concern, but this is also mitigated by ever-increasing device storage capacities. On platforms that support multiple processes (e.g. Linux or Windows), it&#039;s possible to bundle tests into one or more separate test process, which further mitigates the code space concern by isolating the test code in one or more separate applications.&lt;br /&gt;
&lt;br /&gt;
== Samples ==&lt;br /&gt;
&lt;br /&gt;
For this training, we will be using some of the samples provided in  the [[C/C++_Samples]]. For any sample that we don&#039;t cover here explicitly, feel free to explore the sample yourself. All of the samples can be easily built and executed using the STRIDE [[Off-Target Environment]]. &lt;br /&gt;
&lt;br /&gt;
The first three samples that we cover are introductions to the different test unit packaging mechanisms that we support in STRIDE. A good overview of the pros and cons for each type is presented [[Test_Units#Test_Units|here]]. The fourth sample demonstrates test point testing in native code on target (i.e. both the generation and &#039;&#039;validation&#039;&#039; of the test points are done on target). The last sample covers [[File_Transfer_Services|file transfer services]]. The STRIDE file transfer APIs enable reading/writing of files on the host from the device under test and can be useful for implementing data driven test scenarios (for instance, media file playback).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; each of the three packaging examples include samples that cover &#039;&#039;basic&#039;&#039; usage and more advanced reporting techniques (&#039;&#039;runtimeservices&#039;&#039;). We recommend for this training that you focus on the &#039;&#039;basic&#039;&#039; samples as they cover the important packaging concepts. The &#039;&#039;runtimeservices&#039;&#039; examples are relevant only if the built-in reporting techniques are not sufficient for your reporting needs.&lt;br /&gt;
&lt;br /&gt;
=== test_in_c_cpp/TestClass ===&lt;br /&gt;
&lt;br /&gt;
This sample shows the techniques available for packaging and writing test units using classes. If you have a C++ capable compiler, we recommend that you use test classes to package your unit tests, even if your APIs under test are C only. Review the source code in the directory and follow the sample description [[Test Class Samples|here]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;observations:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* all of these example classes have been put into one or more namespaces. This is just for organization purposes, mainly to avoid name collisions when built along with lots of other test classes. Your test classes are &#039;&#039;&#039;not&#039;&#039;&#039; required to be in namespaces, but it can be helpful in avoiding collisions as the number of tests in your system grows.&lt;br /&gt;
* we&#039;ve documented our test classes and methods using [https://en.wikipedia.org/wiki/Doxygen doxygen] style comments. This documentation is automatically extracted by our tools and added to the results report - more information about this feature is [[Test_API#Test_Documentation|here]]&lt;br /&gt;
* you can optionally write test classes that inherit from a base class that we&#039;ve defined ([[Runtime_Test_Services#class_srTest|stride::srTest]]). We recommend you start by writing your classes this way so that your classes will inherit some methods and members that make some custom reporting tasks simpler.&lt;br /&gt;
* exceptions are generally handled by the STRIDE unit test harness, but can be disabled if your compiler does not support them (see &#039;&#039;s2_testclass_basic_exceptions_tests.h/cpp&#039;&#039;).&lt;br /&gt;
* parameterized tests are supported by test classes as well. In these tests, simple constructor arguments can be passed during execution and are available at runtime to the test unit. The STRIDE infrastructure handles the passing of the arguments to the device and the construction of the test class with these arguments. Parameterization of test classes can be a powerful way to expand your test coverage with data driven test scenarios (varying the input to a single test class).&lt;br /&gt;
&lt;br /&gt;
=== test_in_c_cpp/TestFList ===&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates a simpler packaging technique that is appropriate for systems that support C compilation only (no C++). [[Test_Units#Test_Units|FLists]] are simple a collection of functions that are called in sequence. There is no shared state or data, unless you arrange to use global data for this purpose. Review the source code in the directory and follow the sample description [[Test Function List Samples|here]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;observations:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* flist tests support setup/teardown fixturing, but &#039;&#039;&#039;not&#039;&#039;&#039; parameterization or exception handling.&lt;br /&gt;
* we&#039;ve again provided documentation using doxygen formatting for these samples. However, because there is no storage-class entity with which the docs are associated in an FList, there are some restrictions to the documentation, which you can read about [[Test_API#Test_FLists|here]].&lt;br /&gt;
* notice how the [[Scl_test_flist|scl_test_flist pragma]] requires you to both create a name for the test unit (first argument) &#039;&#039;&#039;and&#039;&#039;&#039; explicitly list each test method that is part of the unit. This is one disadvantage of flist over a test class (the latter does not require explicit listing of each test since all conforming public methods are assumed to be test methods).&lt;br /&gt;
&lt;br /&gt;
=== test_in_c_cpp/TestCClass ===&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates a more sophisticated (and complicated) packaging technique for systems that support C compilation only. [[Test_Units#Test_Units|Test C Classes]] are defined by a structure of function pointers (which may also include data) and an initialization function. Review the source code in the directory and follow the sample description [[Test CClass Samples|here]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;observations:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* the [[Scl_test_cclass|scl_test_cclass pragma]] requires a structure of function pointers as well as an initialization function that is called prior to running the tests. The initialization function must take the c class structure pointer as it&#039;s first argument and it will assign values to all the function pointer elements as well as perform any other initialization tasks. The pragma also accepts an optional deinitialization function that will be called after test execution (if provided).&lt;br /&gt;
* we&#039;ve provided documentation using  doxygen formatting for these samples. Because the test functions themselves are bound at runtime, the test documentation must be associated with the function pointer elements in the structure - read more [[Test_API#Test_C-Classes|here]].&lt;br /&gt;
* parameterized tests are also supported by test c classes. Arguments to the initialization function that follow the structure pointer argument are considered constructor arguments and can be passed when running the test.&lt;br /&gt;
* because the test methods are assigned to the structure members at runtime, it&#039;s possible (and recommended) to use statically scoped functions, so as not to pollute the global function space with test functions. That said, you are free to use any functions with matching signatures and linkage, regardless of scope.&lt;br /&gt;
&lt;br /&gt;
=== test_in_c_cpp/TestPoint ===&lt;br /&gt;
&lt;br /&gt;
This sample demonstrates how to do tests that validate [[Test_Point_Testing_in_C/C++|STRIDE Test Points]] - with native test code. Although test point validation tests can be written in host-based scripting languages as well, sometimes it&#039;s preferable to write (and execute) the test logic in native target code - for instance, when validating large or otherwise complex data payloads. Review the source code in the directory and follow the sample description [[Test Point Samples|here]]. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;observations:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* test point tests can be packaged into a harness using any of the [[Test_Units#Test_Units|three types of test units]] that we support. In this case, we used an FList so that the sample could be used on systems that were not C++ capable.&lt;br /&gt;
* one of two methods is used to process the test: [[Test_Point_Testing_in_C/C++#srTestPointWait|srTestPointWait]] or [[Test_Point_Testing_in_C/C++#srTestPointCheck|srTestPointCheck]]. The former is used to process test points as they happen (with a specified timeout) and the latter is used to process test points that have already occurred at the time it is called (post completion check).&lt;br /&gt;
* due to the limitations of C syntax, it can be ugly to create the srTestPointExpect_t data, especially where user data validation is concerned (see the &#039;&#039;CheckData&#039;&#039; example, for instance).&lt;br /&gt;
&lt;br /&gt;
===  test_in_c_cpp/FileServices ===&lt;br /&gt;
&lt;br /&gt;
The FileServices sample demonstrates basic usage of the [[File_Transfer_Services|STRIDE File Transfer APIs]], which provide a way to transfer files to/from the host to the running device. All the data for the file transmission is done using STRIDE messaging between the STRIDE Runner on the host and the STRIDE Runtime on the device, so no additional communication ports are required to use these services. Review the source code in the directory and follow the sample  description [[File Services Samples|here]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;observations:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* most of the functions return an integer status code which should be checked - any nonzero status indicates a failure. We wrote a macro for this sample (&#039;&#039;fsASSERT&#039;&#039;) that checks return codes and adds any errors to the report. You might choose to do something similar, depending on your needs.&lt;br /&gt;
* the file transfer API has both byte and line oriented read/write functions. You can use whichever functions are most appropriate for your needs.&lt;br /&gt;
* this sample uses the local filesystem ([http://en.wikipedia.org/wiki/Stdio stdio]) to write some data to a tempfile - however the STRIDE APIs are themselves buffer/byte oriented and don&#039;t require a local filesystem in general. If your device under test &#039;&#039;does&#039;&#039; have a filesystem, the STRIDE APIs can certainly be used to transfer resources to/from the device filesystem.&lt;br /&gt;
&lt;br /&gt;
=== Build the test app ===&lt;br /&gt;
&lt;br /&gt;
So that we can run these samples, let&#039;s now build an off target test app that contains the source under tests -- you can follow the generic steps  [[Off-Target_Test_App#Copy_Sample_Source|described here]]. When copying the source, make sure you take all the source files from all four of the samples mentioned above.&lt;br /&gt;
&lt;br /&gt;
=== Run the tests ===&lt;br /&gt;
&lt;br /&gt;
Now launch the test app (if you have not already) and execute the runner  with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Test Class tests&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stride --device=&amp;quot;TCP:localhost:8000&amp;quot; --database=&amp;quot;../out/TestApp.sidb&amp;quot; --run=&amp;quot;s2_testclass::Basic::Exceptions; s2_testclass::Basic::Fixtures;  s2_testclass::Basic::Parameterized; s2_testclass::Basic::Simple&amp;quot; --output=TestClass.xml &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Test FList tests&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stride --device=&amp;quot;TCP:localhost:8000&amp;quot; --database=&amp;quot;../out/TestApp.sidb&amp;quot; --run=&amp;quot;s2_testflist_basic_fixtures; s2_testflist_basic_simple&amp;quot; --output=FList.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Test C Class tests&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stride --device=&amp;quot;TCP:localhost:8000&amp;quot; --database=&amp;quot;../out/TestApp.sidb&amp;quot; --run=&amp;quot;s2_testcclass_basic_fixtures; s2_testcclass_basic_parameterized(\&amp;quot;mystring\&amp;quot;, 8); s2_testcclass_basic_simple&amp;quot; --output=CClass.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Test Point tests&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stride --device=&amp;quot;TCP:localhost:8000&amp;quot; --database=&amp;quot;../out/TestApp.sidb&amp;quot; --run=&amp;quot;s2_testpoint_basic&amp;quot; --log_level=all --output=TestPoint.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;File Services tests&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stride  --device=&amp;quot;TCP:localhost:8000&amp;quot; --database=&amp;quot;../out/TestApp.sidb&amp;quot;  --run=&amp;quot;s2_fileservices_basic&amp;quot; --output=FileServices.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These commands will produce distinct result files for each run (per the &#039;&#039;--output&#039;&#039; command above). Please use these result files to peruse the results by opening each in your browser.&lt;br /&gt;
&lt;br /&gt;
=== Examine the results ===&lt;br /&gt;
&lt;br /&gt;
Open the result files created above and browse the results. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;observations:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* the test documentation has been extracted (at compile time) and is attached to the results when the tests are executed. Most of the test suites/test cases should have documentation in the description field.&lt;br /&gt;
* the test point tests cases show the test points that were encountered, information about failures (if any) and log messages (the latter only because we included the &amp;lt;tt&amp;gt;--log_level=all&amp;lt;/tt&amp;gt; option when executing the runner).&lt;br /&gt;
* The two parameterized tests -- s2_testcclass_parameterized&#039;&#039; and &#039;&#039;s2_testclass::Basic::Parameterized&#039;&#039; -- both pass. We passed explicit arguments to the former (on the stride command line above) while we allowed the default arguments (0/null for all) to be passed to the latter by not explicitly specifying how it was to be called.&lt;br /&gt;
&lt;br /&gt;
Explore all the results and make sure that the results meet your expectations based on the test source that you&#039;ve previously browsed.&lt;br /&gt;
&lt;br /&gt;
=== Other Samples ===&lt;br /&gt;
&lt;br /&gt;
We&#039;ve omitted a few samples from this training that cover more advanced and (perhaps) less widely used features. We encourage you to investigate these samples on your own if you are interested - in particular:&lt;br /&gt;
&lt;br /&gt;
* each of the test packaging samples (&#039;&#039;TestClass&#039;&#039;, &#039;&#039;TestCClass&#039;&#039;, and &#039;&#039;TestFList&#039;&#039;) includes examples of using the runtime test APIs to do more advanced reporting (dynamic suite creation, for example). These techniques are applicable for same data driven test scenarios.&lt;br /&gt;
* the [[Test_Double_Samples|TestDouble sample]] shows how to use STRIDE Test Doubles to replace function dependencies at runtime, typically for the purpose of isolating functions under test. This can be a powerful technique, but also requires some up-front work on your part to enable it, as this sample demonstrates.&lt;br /&gt;
&lt;br /&gt;
[[Category: Training_OLD]]&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Class_Sample&amp;diff=14705</id>
		<title>Test Class Sample</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Class_Sample&amp;diff=14705"/>
		<updated>2018-12-28T19:00:28Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Observations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
These examples cover the use of [[Scl test class|Test Classes]] to create logical groupings of test cases.  For unit testing, one test class is typically created for each class under test, although more complicated scenarios often justify other arrangements. Test Classes require a c++ compiler.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;NOTE:&#039;&#039; each of the example test classes is grouped in namespace corresponding to its category (e.g. &#039;&#039;Basic&#039;&#039; or &#039;&#039;Runtime Services&#039;&#039;).  This is something shown for organizational purposes only -- it is &#039;&#039;&#039;not&#039;&#039;&#039; a general requirement that test classes be placed into namespaces.  &lt;br /&gt;
&lt;br /&gt;
==Tests Description==&lt;br /&gt;
&lt;br /&gt;
===Basic===&lt;br /&gt;
&lt;br /&gt;
These examples cover the simplest, easiest way to code a STRIDE test class. These examples use simple [http://en.wikipedia.org/wiki/Plain_Old_Data_Structures POD] return types to indicate status.&lt;br /&gt;
&lt;br /&gt;
====Basic::Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates passing and failing tests using the four primary integer types (int, bool, short, and char) that infer status from.&lt;br /&gt;
&lt;br /&gt;
====Basic::Fixtures====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Test_Unit_Pragmas#Fixturing_Pragmas|setup and teardown]] fixtures.  The setup and teardown methods are called immediately before and after the execution of each test method, respectively.&lt;br /&gt;
&lt;br /&gt;
====Basic::Exceptions====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates exceptions thrown from a test method are caught by the intercept module and noted in the results.  Any exception that is caught by the harness is assumed to indicate failure. If you want to write tests for expected exceptions, consider using our [[Test Macros#Exception_Macros|exception macros]]&lt;br /&gt;
&lt;br /&gt;
====Basic::Parameterized====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to pass arguments to the constructor of your test unit. This is something that is useful when you want to run the same test scenario with different sets of input data, for instance, as described by [http://xunitpatterns.com/Parameterized%20Test.html this pattern].&lt;br /&gt;
&lt;br /&gt;
===Runtime Services===&lt;br /&gt;
&lt;br /&gt;
These examples cover basic usage of the [[Runtime_Test_Services#C_Test_Functions|Runtime Test Services API]] (as declared in srtest.h).&lt;br /&gt;
&lt;br /&gt;
====RuntimeServices::Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Runtime_Test_Services#srTestCaseSetStatus|srTestCaseSetStatus]] to set status and [[Runtime_Test_Services#srTestCaseAddAnnotation|srTestCaseAddAnnotation]] to add a comment.&lt;br /&gt;
&lt;br /&gt;
====RuntimeServices::Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Runtime_Test_Services#srTestSuiteAddCase|srTestSuiteAddCase]], [[Runtime_Test_Services#srTestSuiteAddAnnotation|srTestSuiteAddAnnotation]], and [[Runtime_Test_Services#srTestAnnotationAddComment|srTestAnnotationAddComment]] for dynamic case, and annotation creation in the context of a single test method.&lt;br /&gt;
&lt;br /&gt;
====RuntimeServices::Override====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Runtime_Test_Services#srTestCaseSetStatus|srTestCaseSetStatus]] to override the status that would otherwise be inferred from the return value.&lt;br /&gt;
&lt;br /&gt;
====RuntimeServices::VarComment====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [http://en.wikipedia.org/wiki/Printf printf] style format strings with [[Runtime_Test_Services#srTestCaseAddAnnotation|srTestCaseAddAnnotation]].&lt;br /&gt;
&lt;br /&gt;
===srTest===&lt;br /&gt;
&lt;br /&gt;
These examples show to how to use the [[Runtime_Test_Services#C.2B.2B_Test_Classes|stride::srTest]] base class for your test classes.  When you publicly inherit from srTest, you get access to default testCase and testSuite members and their associated methods.&lt;br /&gt;
&lt;br /&gt;
====srTest::Simple====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates the use of [[Runtime_Test_Services#SetStatus|testCase.setStatus]] to set the status for test cases.&lt;br /&gt;
&lt;br /&gt;
====srTest::Dynamic====&lt;br /&gt;
&lt;br /&gt;
This example demonstrates how to use [[Runtime_Test_Services#method_AddCase|AddCase]], [[Runtime_Test_Services#method_AddAnnotation_2|testCase.AddAnnotation]], and [[Runtime_Test_Services#method_AddComment|testAnnotation.AddComment]] for dynamic test case, and annotation creation within the context of one test method.&lt;br /&gt;
&lt;br /&gt;
== Run Tests ==&lt;br /&gt;
&lt;br /&gt;
Now launch the test app (if you have not already) and execute the runner  with the following commands: &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Test Class tests&#039;&#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
stride --device=&amp;quot;TCP:localhost:8000&amp;quot; --database=&amp;quot;../out/TestApp.sidb&amp;quot; --run=&amp;quot;s2_testclass::Basic::Exceptions; s2_testclass::Basic::Fixtures;  s2_testclass::Basic::Parameterized; s2_testclass::Basic::Simple&amp;quot; --output=TestClass.xml &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the command will produce distinct result files for the run (per the &#039;&#039;--output&#039;&#039; command above). Please use the result file to peruse the results by opening each in your browser.&lt;br /&gt;
&lt;br /&gt;
== Observations ==&lt;br /&gt;
This sample shows the techniques available for packaging and writing test units using classes. If you have a C++ capable compiler, we recommend that you use test classes to package your unit tests, even if your APIs under test are C only. Review the source code in the directory and follow the sample description. &lt;br /&gt;
&lt;br /&gt;
The following are some test observations:&lt;br /&gt;
* all of these example classes have been put into one or more namespaces. This is just for organization purposes, mainly to avoid name collisions when built along with lots of other test classes. Your test classes are &#039;&#039;&#039;not&#039;&#039;&#039; required to be in namespaces, but it can be helpful in avoiding collisions as the number of tests in your system grows.&lt;br /&gt;
* we&#039;ve documented our test classes and methods using [https://en.wikipedia.org/wiki/Doxygen doxygen] style comments. This documentation is automatically extracted by our tools and added to the results report - more information about this feature is [[Test_Documentation_in_C/C%2B%2B|here]]&lt;br /&gt;
* you can optionally write test classes that inherit from a base class that we&#039;ve defined ([[Runtime_Test_Services#class_srTest|stride::srTest]]). We recommend you start by writing your classes this way so that your classes will inherit some methods and members that make some custom reporting tasks simpler.&lt;br /&gt;
* exceptions are generally handled by the STRIDE unit test harness, but can be disabled if your compiler does not support them (see &#039;&#039;s2_testclass_basic_exceptions_tests.h/cpp&#039;&#039;).&lt;br /&gt;
* parameterized tests are supported by test classes as well. In these tests, simple constructor arguments can be passed during execution and are available at runtime to the test unit. The STRIDE infrastructure handles the passing of the arguments to the device and the construction of the test class with these arguments. Parameterization of test classes can be a powerful way to expand your test coverage with data driven test scenarios (varying the input to a single test class).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Samples]]&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=S2scompile&amp;diff=14704</id>
		<title>S2scompile</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=S2scompile&amp;diff=14704"/>
		<updated>2018-12-28T18:59:58Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Options */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
== The SCL Compiler Utility ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;s2scompile&#039;&#039;&#039; executable will compile a set of scl files (C/C++ source files with [[SCL Pragmas]]) and produce a &amp;lt;tt&amp;gt;.meta&amp;lt;/tt&amp;gt;  file for each (assuming that compilation is successful).&amp;lt;ref&amp;gt;.meta files are binary-format intermediate files suitable for input to the [[s2sbind]] utility.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All warnings and errors that occur during the compilation are written to the standard output device. The compilation for a particular file is considered successful if no errors occur. Otherwise it is unsuccessful. Unsuccessful compilations do not yield &amp;lt;tt&amp;gt;.meta&amp;lt;/tt&amp;gt; files.&lt;br /&gt;
 &lt;br /&gt;
Options are validated and any incorrect options diagnosed will result in compilation process failure.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
    s2scompile [&amp;lt;i&amp;gt;options&amp;lt;/i&amp;gt;] &amp;lt;i&amp;gt;scl_file1&amp;lt;/i&amp;gt; [&amp;lt;i&amp;gt;scl_fileN&amp;lt;/i&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Options ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;background-color:#ffffcc;&amp;quot;   &lt;br /&gt;
!width=&amp;quot;200pt&amp;quot;|&#039;&#039;&#039;Option&#039;&#039;&#039;&lt;br /&gt;
!width=&amp;quot;500pt&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--version&#039;&#039;&#039;&lt;br /&gt;
| Print version information.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--preprocess&#039;&#039;&#039;&lt;br /&gt;
| Do preprocessing only. Write preprocessed text file to the output.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--dependencies&#039;&#039;&#039;&lt;br /&gt;
| Do preprocessing only. Instead of the normal preprocessing output, generate in the preprocessing output file a list of dependency lines suitable for input to the UNIX make program. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_line_commands&#039;&#039;&#039;&lt;br /&gt;
| Same as &#039;&#039;&#039;–-preprocess&#039;&#039;&#039; except that line number information is removed from the preprocessed output files.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--c++&#039;&#039;&#039;&lt;br /&gt;
| Enable compilation of c++. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--c&#039;&#039;&#039;&lt;br /&gt;
| Enable compilation of C (specifically C89). This is the default.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--include_directory=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;--sys_include=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-I&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Add dir to the end of the list of directories searched for &amp;lt;tt&amp;gt;#include&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_stdinc&#039;&#039;&#039;&lt;br /&gt;
| Do not search the standard system directories for header files. See [[#Search Path|Search Path]] for details.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--define_macro=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;[&#039;&#039;&#039;(&#039;&#039;&#039;&amp;lt;i&amp;gt;parameter-list&amp;lt;/i&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;][&#039;&#039;&#039;=&#039;&#039;&#039;&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;[&#039;&#039;&#039;(&#039;&#039;&#039;&amp;lt;i&amp;gt;parameter-list&amp;lt;/i&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;][&#039;&#039;&#039;=&#039;&#039;&#039;&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;]&lt;br /&gt;
| Define macro &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt; as &amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;. If &amp;quot;=&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;&amp;quot; is omitted, define &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt; as 1.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--undefine_macro=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-U&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Remove predefined macro &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--compatibility=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;string&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Vendor compatibility mode. String can be &amp;quot;microsoft&amp;quot;, &amp;quot;generic&amp;quot; or &amp;quot;gnu&amp;quot;. Default is &amp;quot;generic&amp;quot;. When &amp;quot;Microsoft&amp;quot; is set, the compiler supports a number of extensions to the C or C++ language that are compatible with the Microsoft family of compilers. &amp;quot;gnu&amp;quot; - instructs the compiler to support language extensions compatible with the Gnu family of compilers.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_warning&#039;&#039;&#039;&lt;br /&gt;
| Suppress all warnings in the compilation phase.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--macros&#039;&#039;&#039;&lt;br /&gt;
| Resolve macro (preprocessor define) constant value. Pass this flag only if you intend to do script based testing.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--documentation&#039;&#039;&#039;&lt;br /&gt;
| Extract [https://en.wikipedia.org/wiki/Doxygen doxygen style] source documentation. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--output=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-o&#039;&#039;&#039;&amp;lt;path&amp;gt;&lt;br /&gt;
| Output file or directory. The default is the current directory.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_big_endian&#039;&#039;&#039;&lt;br /&gt;
| Target uses a big endian by representation. The default is little endian.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_plain_char_is_unsigned&#039;&#039;&#039;&lt;br /&gt;
| Target uses unsigned chars to represent “plain” char. The default is signed.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_adaptive_enum&#039;&#039;&#039;&lt;br /&gt;
| Target has adaptive enums. The default is no adaptive enums.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_pack_alignment=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target struct pack alignment. The default is 16. Possible values are 1, 2, 4, 8 or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_char=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target platform size of char. Default is 1. Possible values are 1, 2, 4, 8, or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_char=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target platform alignment of char. Default is 1. Possible values are 1, 2, 4, 8 or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_short=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 2.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_short=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 2.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_int=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_int=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_float=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_float=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_bool_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;char&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_wchar_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;unsigned short&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_size_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;unsigned int&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_ptrdiff_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;int&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--options_file=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;file&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| A file that contains command line options. The format is the same as the command line with the only addition that it could be split on multiple lines. A line starting with &amp;quot;#&amp;quot; or &amp;quot;;&amp;quot; symbol is ignored.&lt;br /&gt;
This option is necessary if the length of the command line string exceeds system limits. Otherwise it is provided only as a convenience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;NOTE:&#039;&#039;&#039; To simplify the integration in existing build environments other standard compiler options (e.g. ARM [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491b/CHDCIEGC.html --via=&amp;lt;file&amp;gt;], GCC [http://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options @&amp;lt;file&amp;gt;], MSVC [http://msdn.microsoft.com/en-us/library/3te4xt0y(v=VS.90).aspx @&amp;lt;file&amp;gt;]) with similar meaning are also recognized and processed the same way.&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The [[Framework_Setup#SDK|standard Platform SDKs]] shipped with the Framework contain a set of options files with predefined target settings for several popular CPUs. Please consider using one of them instead of explicitly passing &amp;lt;tt&amp;gt;--targ_*&amp;lt;/tt&amp;gt; options on the command line.&lt;br /&gt;
&lt;br /&gt;
=== Search Path ===&lt;br /&gt;
&amp;lt;b&amp;gt;s2scompile&amp;lt;/b&amp;gt; by default looks in several different places for headers. It looks for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt; in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$(STRIDE_DIR)/SDK/Runtime&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where $(STRIDE_DIR) is the location where the STRIDE packages are installed following [[Framework_Setup#Directories_and_Files|recommended directory layout]].&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;i&amp;gt;microsoft&amp;lt;/i&amp;gt; mode is specified and $(INCLUDE) enviroment variable is defined (as a &amp;quot;;&amp;quot; separated path list) then all of its entries are looked in for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;i&amp;gt;gnu&amp;lt;/i&amp;gt; mode is specified and $(CPATH) and/or $(C_INCLUDE_PATH) (or $(CPLUS_INCLUDE_PATH) for C++) enviroment variables are defined (as a &amp;quot;:&amp;quot; separated path list) then all of its entries are looked in for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt;. In addition if $(TARGET_CPP) specifies the target GNU &amp;lt;tt&amp;gt;cpp&amp;lt;/tt&amp;gt; (GCC preprocessor or a command line equivalent) it is queried and any given path by it is looked in.&lt;br /&gt;
&lt;br /&gt;
You can add to this list, before any of the default places, by using the &amp;lt;tt&amp;gt;-I&amp;lt;dir&amp;gt;&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
 &lt;br /&gt;
You can prevent s2scompile from searching any of the default directories with the &amp;lt;tt&amp;gt;--no_stdinc&amp;lt;/tt&amp;gt; option. &amp;lt;tt&amp;gt;-I&amp;lt;/tt&amp;gt; options are not ignored as described above when &amp;lt;tt&amp;gt;--no_stdinc&amp;lt;/tt&amp;gt; is in effect. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;s2scompile&amp;lt;/b&amp;gt; looks for headers requested with &amp;lt;tt&amp;gt;#include &amp;quot;file&amp;quot;&amp;lt;/tt&amp;gt; first in the directory containing the current file, then in the same places it would have looked for a header requested with angle brackets.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Refer to the [[Build_Tools#Compiling_multiple_files|Compiling]] section of the Build Tools Examples.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Build_Tools]]&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Perl_Script_Snippets&amp;diff=14703</id>
		<title>Perl Script Snippets</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Perl_Script_Snippets&amp;diff=14703"/>
		<updated>2018-12-26T23:18:27Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Accessing compiler macro values (constants) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Below are some brief examples of script test modules that use the [[Perl Script APIs]] for Stride. Most of these examples are incomplete and are only intended to give a quick overview of how this API can be used. &lt;br /&gt;
&lt;br /&gt;
With any perl module that you write, we recommend that you perform a quick syntax check before attempting to execute the module using the Stride Runner. Syntax checking with warnings is easily accomplished by running with the &amp;lt;tt&amp;gt;-cw&amp;lt;/tt&amp;gt; option, e.g.:&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
  perl -I %STRIDE_DIR%\lib\perl -I %STRIDE_DIR%\lib\perl\5.20 -cw MyTests.pm&lt;br /&gt;
&lt;br /&gt;
* Linux/FreeBSD&lt;br /&gt;
  perl -I $STRIDE_DIR/lib/perl -I $STRIDE_DIR/lib/perl/5.20 -cw MyTests.pm&lt;br /&gt;
&lt;br /&gt;
This will compile the perl script without running it, and it will emit any syntax errors that are found.&lt;br /&gt;
&lt;br /&gt;
== Canonical module format ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
package MyTests;&lt;br /&gt;
use base qw(STRIDE::Test);&lt;br /&gt;
use STRIDE::Test;&lt;br /&gt;
&lt;br /&gt;
sub test_one : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_TRUE(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub test_two : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_TRUE(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subroutine attributes to declare test methods and fixtures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sub a_test : Test {&lt;br /&gt;
    # test method&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub startup_method : Test(startup) {&lt;br /&gt;
    # startup fixturing&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub shutdown_method : Test(shutdown) {&lt;br /&gt;
    # shutdown fixturing&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub setup_method : Test(setup) {&lt;br /&gt;
    # setup fixturing&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub teardown_method : Test(teardown) {&lt;br /&gt;
    # teardown fixture&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test module including POD documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
package MyTests;&lt;br /&gt;
use base qw(STRIDE::Test);&lt;br /&gt;
use STRIDE::Test;&lt;br /&gt;
&lt;br /&gt;
=head1 NAME&lt;br /&gt;
&lt;br /&gt;
MyTests - example tests&lt;br /&gt;
&lt;br /&gt;
=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
This is MyTests_1, a deeply funky piece of Perl code.&lt;br /&gt;
&lt;br /&gt;
=head1 METHODS&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=head2 test_one&lt;br /&gt;
&lt;br /&gt;
this is a simple &amp;quot;passing&amp;quot; test.&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
sub test_one : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_TRUE(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=head2 test_two&lt;br /&gt;
&lt;br /&gt;
this is a simple &amp;quot;failing&amp;quot; test.&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
sub test_two : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_TRUE(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simple expectation test ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub sync_exact : Test {    &lt;br /&gt;
    my $h = TestPointSetup(&lt;br /&gt;
        ordered =&amp;gt; 1,&lt;br /&gt;
        expected =&amp;gt; [&lt;br /&gt;
            &amp;quot;point a&amp;quot;,&lt;br /&gt;
            &amp;quot;point b&amp;quot;,&lt;br /&gt;
            &amp;quot;point c&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        unexpected =&amp;gt; [ TEST_POINT_EVERYTHING_ELSE ]&lt;br /&gt;
    );&lt;br /&gt;
    &lt;br /&gt;
    #...start source under test, if necessary&lt;br /&gt;
&lt;br /&gt;
    # use Check if the events have all happened by the time &lt;br /&gt;
    # you validate the test points. Otherwise use Wait with &lt;br /&gt;
    # a reasonable timeout value.&lt;br /&gt;
    $h-&amp;gt;Check(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expectation test with predicate==&lt;br /&gt;
&lt;br /&gt;
Here&#039;s how to specify a predicate for validating a test point. The predicate &lt;br /&gt;
shown is just a stub and doesn&#039;t do any actual validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub _myPredicate&lt;br /&gt;
{&lt;br /&gt;
    my ($test_point, $expected_data) = @_;&lt;br /&gt;
    # $test_point is a hashref with the following fields:&lt;br /&gt;
    #  label, data, size, bin, file, line&lt;br /&gt;
    # use the test point data to perform validation and return &lt;br /&gt;
    # nonzero value on success, 0 on failure.&lt;br /&gt;
&lt;br /&gt;
    return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub use_a_predicate : Test {&lt;br /&gt;
    # use arrayref notation to specify label, count, predicate and expected data&lt;br /&gt;
    # if you want to specify a predicate. Predicates can be specified for some, all&lt;br /&gt;
    # or none of the test points. The fourth field is optional - it is just passed&lt;br /&gt;
    # to the predicate as the second argument and is typically used to specify some &lt;br /&gt;
    # expected data for the predicate to validate against.    &lt;br /&gt;
    my $h = TestPointSetup(&lt;br /&gt;
        expected =&amp;gt; [&lt;br /&gt;
            [&amp;quot;point a&amp;quot;, 1, \&amp;amp;_myPredicate, 54321],&lt;br /&gt;
            &amp;quot;point b&amp;quot;,&lt;br /&gt;
            [&amp;quot;point c&amp;quot;, 1, \&amp;amp;_myPredicate]&lt;br /&gt;
        ]&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    $h-&amp;gt;Check(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reusing a trace data file as expectation ==&lt;br /&gt;
&lt;br /&gt;
This examples shows a simple way to reuse captured YAML trace data from a file as your expectation (this is an alternative to specifying the &amp;lt;tt&amp;gt;expected&amp;lt;/tt&amp;gt; array directly). This example assumes the &#039;&#039;trace_data.yml&#039;&#039; file lives in the same directory as the test module file, but you are free to change this - just change the &amp;lt;tt&amp;gt;expect_file&amp;lt;/tt&amp;gt; argument accordingly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# these standard modules are only required for the file &lt;br /&gt;
# path logic used to generate a full file path for trace_data.yml&lt;br /&gt;
use File::Basename;&lt;br /&gt;
use File::Spec;&lt;br /&gt;
&lt;br /&gt;
sub trace_data : Test {    &lt;br /&gt;
    my $h = TestPointSetup(&lt;br /&gt;
        ordered =&amp;gt; 1,&lt;br /&gt;
        expect_file =&amp;gt; File::Spec-&amp;gt;catfile(dirname(__FILE__), &#039;trace_data.yml&#039;),&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    # make any function calls necessary to start the SUT, &lt;br /&gt;
    # then do a Check or Wait, depending on your scenario&lt;br /&gt;
&lt;br /&gt;
    $h-&amp;gt;Check();   &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Invoking a function on the target ==&lt;br /&gt;
&lt;br /&gt;
=== Standalone two-line script for invoking a remote function ===&lt;br /&gt;
This simple script shows the minimal code required to make a remote function call of a function that has been enabled with the [[Scl_function | Function Pragrma]] enabling remoting. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use STRIDE;&lt;br /&gt;
$STRIDE::Remote-&amp;gt;MyRemoteFunction();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
More functions can be added to this script by making additional calls using the &amp;lt;tt&amp;gt;$STRIDE::Remote&amp;lt;/tt&amp;gt; object. If your remote function accepts arguments, they should be added to the function call parameters (see the [[Perl_Script_APIs#STRIDE::Remote|Perl API Reference]] for more information).&lt;br /&gt;
&lt;br /&gt;
=== Making calls with test modules ===&lt;br /&gt;
&lt;br /&gt;
Within test modules, remote functions can be easily invoked using the exported &amp;lt;tt&amp;gt;Remote&amp;lt;/tt&amp;gt; object. The following two examples illustrate this.&lt;br /&gt;
&lt;br /&gt;
==== Blocking syntax (blocks until function returns) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
my $retval = Remote-&amp;gt;foo(1, &amp;quot;input string&amp;quot;);&lt;br /&gt;
Remote-&amp;gt;bar();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== asynchronous execution (return immediately, function continues to execute on device) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
my $fh = Remote-&amp;gt;async-&amp;gt;foo(1, &amp;quot;input string&amp;quot;);&lt;br /&gt;
my $retval = $fh-&amp;gt;Wait(1000); #waits up to one second for the function to return&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Accessing compiler macro values (constants) ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* some compilation unit included in the STRIDE compilation process */&lt;br /&gt;
#define SOME_DEFINED_VALUE 42&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
my $value = Constants-&amp;gt;{SOME_DEFINED_VALUE};&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Perl_Script_Snippets&amp;diff=14702</id>
		<title>Perl Script Snippets</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Perl_Script_Snippets&amp;diff=14702"/>
		<updated>2018-10-16T23:39:06Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Below are some brief examples of script test modules that use the [[Perl Script APIs]] for Stride. Most of these examples are incomplete and are only intended to give a quick overview of how this API can be used. &lt;br /&gt;
&lt;br /&gt;
With any perl module that you write, we recommend that you perform a quick syntax check before attempting to execute the module using the Stride Runner. Syntax checking with warnings is easily accomplished by running with the &amp;lt;tt&amp;gt;-cw&amp;lt;/tt&amp;gt; option, e.g.:&lt;br /&gt;
&lt;br /&gt;
* Windows&lt;br /&gt;
  perl -I %STRIDE_DIR%\lib\perl -I %STRIDE_DIR%\lib\perl\5.20 -cw MyTests.pm&lt;br /&gt;
&lt;br /&gt;
* Linux/FreeBSD&lt;br /&gt;
  perl -I $STRIDE_DIR/lib/perl -I $STRIDE_DIR/lib/perl/5.20 -cw MyTests.pm&lt;br /&gt;
&lt;br /&gt;
This will compile the perl script without running it, and it will emit any syntax errors that are found.&lt;br /&gt;
&lt;br /&gt;
== Canonical module format ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use strict;&lt;br /&gt;
use warnings;&lt;br /&gt;
&lt;br /&gt;
package MyTests;&lt;br /&gt;
use base qw(STRIDE::Test);&lt;br /&gt;
use STRIDE::Test;&lt;br /&gt;
&lt;br /&gt;
sub test_one : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_TRUE(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub test_two : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_TRUE(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subroutine attributes to declare test methods and fixtures ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
sub a_test : Test {&lt;br /&gt;
    # test method&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub startup_method : Test(startup) {&lt;br /&gt;
    # startup fixturing&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub shutdown_method : Test(shutdown) {&lt;br /&gt;
    # shutdown fixturing&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub setup_method : Test(setup) {&lt;br /&gt;
    # setup fixturing&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub teardown_method : Test(teardown) {&lt;br /&gt;
    # teardown fixture&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test module including POD documentation ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
package MyTests;&lt;br /&gt;
use base qw(STRIDE::Test);&lt;br /&gt;
use STRIDE::Test;&lt;br /&gt;
&lt;br /&gt;
=head1 NAME&lt;br /&gt;
&lt;br /&gt;
MyTests - example tests&lt;br /&gt;
&lt;br /&gt;
=head1 DESCRIPTION&lt;br /&gt;
&lt;br /&gt;
This is MyTests_1, a deeply funky piece of Perl code.&lt;br /&gt;
&lt;br /&gt;
=head1 METHODS&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=head2 test_one&lt;br /&gt;
&lt;br /&gt;
this is a simple &amp;quot;passing&amp;quot; test.&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
sub test_one : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_TRUE(1);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=head2 test_two&lt;br /&gt;
&lt;br /&gt;
this is a simple &amp;quot;failing&amp;quot; test.&lt;br /&gt;
&lt;br /&gt;
=cut&lt;br /&gt;
sub test_two : Test&lt;br /&gt;
{&lt;br /&gt;
    ASSERT_TRUE(0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
1;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Simple expectation test ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub sync_exact : Test {    &lt;br /&gt;
    my $h = TestPointSetup(&lt;br /&gt;
        ordered =&amp;gt; 1,&lt;br /&gt;
        expected =&amp;gt; [&lt;br /&gt;
            &amp;quot;point a&amp;quot;,&lt;br /&gt;
            &amp;quot;point b&amp;quot;,&lt;br /&gt;
            &amp;quot;point c&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        unexpected =&amp;gt; [ TEST_POINT_EVERYTHING_ELSE ]&lt;br /&gt;
    );&lt;br /&gt;
    &lt;br /&gt;
    #...start source under test, if necessary&lt;br /&gt;
&lt;br /&gt;
    # use Check if the events have all happened by the time &lt;br /&gt;
    # you validate the test points. Otherwise use Wait with &lt;br /&gt;
    # a reasonable timeout value.&lt;br /&gt;
    $h-&amp;gt;Check(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Expectation test with predicate==&lt;br /&gt;
&lt;br /&gt;
Here&#039;s how to specify a predicate for validating a test point. The predicate &lt;br /&gt;
shown is just a stub and doesn&#039;t do any actual validation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub _myPredicate&lt;br /&gt;
{&lt;br /&gt;
    my ($test_point, $expected_data) = @_;&lt;br /&gt;
    # $test_point is a hashref with the following fields:&lt;br /&gt;
    #  label, data, size, bin, file, line&lt;br /&gt;
    # use the test point data to perform validation and return &lt;br /&gt;
    # nonzero value on success, 0 on failure.&lt;br /&gt;
&lt;br /&gt;
    return 1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
sub use_a_predicate : Test {&lt;br /&gt;
    # use arrayref notation to specify label, count, predicate and expected data&lt;br /&gt;
    # if you want to specify a predicate. Predicates can be specified for some, all&lt;br /&gt;
    # or none of the test points. The fourth field is optional - it is just passed&lt;br /&gt;
    # to the predicate as the second argument and is typically used to specify some &lt;br /&gt;
    # expected data for the predicate to validate against.    &lt;br /&gt;
    my $h = TestPointSetup(&lt;br /&gt;
        expected =&amp;gt; [&lt;br /&gt;
            [&amp;quot;point a&amp;quot;, 1, \&amp;amp;_myPredicate, 54321],&lt;br /&gt;
            &amp;quot;point b&amp;quot;,&lt;br /&gt;
            [&amp;quot;point c&amp;quot;, 1, \&amp;amp;_myPredicate]&lt;br /&gt;
        ]&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    $h-&amp;gt;Check(); &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Reusing a trace data file as expectation ==&lt;br /&gt;
&lt;br /&gt;
This examples shows a simple way to reuse captured YAML trace data from a file as your expectation (this is an alternative to specifying the &amp;lt;tt&amp;gt;expected&amp;lt;/tt&amp;gt; array directly). This example assumes the &#039;&#039;trace_data.yml&#039;&#039; file lives in the same directory as the test module file, but you are free to change this - just change the &amp;lt;tt&amp;gt;expect_file&amp;lt;/tt&amp;gt; argument accordingly.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
# these standard modules are only required for the file &lt;br /&gt;
# path logic used to generate a full file path for trace_data.yml&lt;br /&gt;
use File::Basename;&lt;br /&gt;
use File::Spec;&lt;br /&gt;
&lt;br /&gt;
sub trace_data : Test {    &lt;br /&gt;
    my $h = TestPointSetup(&lt;br /&gt;
        ordered =&amp;gt; 1,&lt;br /&gt;
        expect_file =&amp;gt; File::Spec-&amp;gt;catfile(dirname(__FILE__), &#039;trace_data.yml&#039;),&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    # make any function calls necessary to start the SUT, &lt;br /&gt;
    # then do a Check or Wait, depending on your scenario&lt;br /&gt;
&lt;br /&gt;
    $h-&amp;gt;Check();   &lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Invoking a function on the target ==&lt;br /&gt;
&lt;br /&gt;
=== Standalone two-line script for invoking a remote function ===&lt;br /&gt;
This simple script shows the minimal code required to make a remote function call of a function that has been enabled with the [[Scl_function | Function Pragrma]] enabling remoting. &lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
use STRIDE;&lt;br /&gt;
$STRIDE::Remote-&amp;gt;MyRemoteFunction();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
More functions can be added to this script by making additional calls using the &amp;lt;tt&amp;gt;$STRIDE::Remote&amp;lt;/tt&amp;gt; object. If your remote function accepts arguments, they should be added to the function call parameters (see the [[Perl_Script_APIs#STRIDE::Remote|Perl API Reference]] for more information).&lt;br /&gt;
&lt;br /&gt;
=== Making calls with test modules ===&lt;br /&gt;
&lt;br /&gt;
Within test modules, remote functions can be easily invoked using the exported &amp;lt;tt&amp;gt;Remote&amp;lt;/tt&amp;gt; object. The following two examples illustrate this.&lt;br /&gt;
&lt;br /&gt;
==== Blocking syntax (blocks until function returns) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
my $retval = Remote-&amp;gt;foo(1, &amp;quot;input string&amp;quot;);&lt;br /&gt;
Remote-&amp;gt;bar();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== asynchronous execution (return immediately, function continues to execute on device) ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
my $fh = Remote-&amp;gt;async-&amp;gt;foo(1, &amp;quot;input string&amp;quot;);&lt;br /&gt;
my $retval = $fh-&amp;gt;Wait(1000); #waits up to one second for the function to return&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Accessing compiler macro values (constants) ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
/* some compilation unit included in the STRIDE compilation process */&lt;br /&gt;
#define SOME_DEFINED_VALUE 42&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
my $value = Remote-&amp;gt;SOME_DEFINED_VALUE;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14701</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14701"/>
		<updated>2018-08-13T22:20:28Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* 5.0.02p */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Testspace integration ==&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifiers.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14700</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14700"/>
		<updated>2018-08-13T22:20:10Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* 5.0.02o */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Testspace integration ==&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable tp process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02p ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process &amp;quot;static_assert&amp;quot; C++11 specifiers.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to process SCL defined via &amp;quot;_Pragma&amp;quot; operator.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Test_Pragmas&amp;diff=14699</id>
		<title>Test Pragmas</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Test_Pragmas&amp;diff=14699"/>
		<updated>2018-07-17T20:55:43Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Test Unit [http://en.wikipedia.org/wiki/Directive_(programming) pragmas] are a set of compiler directives that allow annotations within C and C++ source files that are meaningful to the Stride Build Tools but &#039;&#039;&#039;ignored&#039;&#039;&#039; by standard C/C++ compilers. During the build process the [[Build Tools]] generates an [[Intercept Module]] that provides [http://en.wikipedia.org/wiki/Test_harness harnessing] for the tests. Refer to the following header file that contains the &#039;&#039;scl_test_class&#039;&#039; pragma.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Header file&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;source  lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
class MyTest : public stride::srTest {&lt;br /&gt;
public: &lt;br /&gt;
    void CheckFoo();&lt;br /&gt;
    void CheckBoo();&lt;br /&gt;
};&lt;br /&gt;
#pragma scl_test_class(MyTest)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_test_class ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;scl_test_class&#039;&#039; pragma is used to declare a C++ class as a &#039;&#039;&#039;Test Unit&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_test_class(class-name)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;class-name&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| The name of the test unit. This must be the name of an existing C++ class or a struct.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* This pragma requires the compilation language to be C++. If the compilation language is not C++ and this pragma is encountered, then an error is issued and this pragma is ignored.&lt;br /&gt;
&lt;br /&gt;
* The test class identified:&lt;br /&gt;
** must have single public constructor - default or explicit.&lt;br /&gt;
** must not be a templated class&lt;br /&gt;
** must not be a nested class&lt;br /&gt;
** must not be a pure virtual class&lt;br /&gt;
** must have one or more member functions that is suitable as a test method. For a member function to be a test method it:&lt;br /&gt;
*** must be declared within the test class (a method that is inherited from a base class cannot be a test method)&lt;br /&gt;
*** must be declared with public access&lt;br /&gt;
*** must have a return type of bool, an integral type (signed or unsigned long, int, short, char) or void.&lt;br /&gt;
*** must have an empty parameter list - declared as f() or f(void).&lt;br /&gt;
*** must not be a templatized function&lt;br /&gt;
*** must not be an overloaded operator&lt;br /&gt;
*** must not be a static member.&lt;br /&gt;
&lt;br /&gt;
* Optionally if desired a set of setup/teardown fixtures could be applied.&lt;br /&gt;
&lt;br /&gt;
* Optionally if desired the public constructor may have arguments (they must all be of [http://en.wikipedia.org/wiki/Null-terminated_string C-string] and numeric types).&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class MyOtherTest : public stride::srTest&lt;br /&gt;
{&lt;br /&gt;
public:&lt;br /&gt;
  // Declaring a constructor for an scl_test_class is optional, but&lt;br /&gt;
  // if a constructor is declared all arguments must be of plain old data (POD) type.&lt;br /&gt;
  MyOtherTest(int i, const char* s);&lt;br /&gt;
&lt;br /&gt;
  void CheckItOut();&lt;br /&gt;
};&lt;br /&gt;
#ifdef _SCL    &lt;br /&gt;
#pragma scl_test_class(MyOtherTest)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_test_cclass ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;scl_test_cclass&#039;&#039; pragma is used to declare a &amp;quot;C&amp;quot; language struct (class) to be captured as a &#039;&#039;&#039;Test Unit&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_test_cclass(cclass-name, init-function-name { , deinit-function-name })&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;180&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;60&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;cclass-name&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| The name of the test unit. This is must be the name of an existing struct in C/C++ or a class in C++.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;init-function-name&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| The initialization function name. This is synonymous with a class constructor. There must be a prior user-declared function with this name. The first parameter must be a pointer to cclass-name. Additional parameters are left up to the user&#039;s implementation.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;deinit-function-name (optional)&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| The deinitialization function name. This is synonymous with a class destructor. If declared, there must be a user-declared function with this name. The first parameter must be a pointer to cclass-name. Additional parameters are left up to the user&#039;s implementation.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* The cclass-name identified:&lt;br /&gt;
** may not appear as a specifier of a prior pragma.&lt;br /&gt;
** must be a struct in C.&lt;br /&gt;
** must be either a struct or class in C++.&lt;br /&gt;
** must be [http://en.wikipedia.org/wiki/Plain_Old_Data_Structures POD] type.&lt;br /&gt;
** must not be a template class.&lt;br /&gt;
** must not be a nested class.&lt;br /&gt;
** must contain at least one member function pointer with a prototype that:&lt;br /&gt;
*** returns integral type: void, int, or bool (bool accepted only for C++). &lt;br /&gt;
*** has a first parameter that is a pointer to cclass-name.&lt;br /&gt;
&lt;br /&gt;
* The init-function-name identified:&lt;br /&gt;
** must be declared prior to this pragma&#039;s declaration.&lt;br /&gt;
** must not have been used in any prior or subsequent SCL pragma.&lt;br /&gt;
** must have its first parameter declared as a pointer to the identified cclass.&lt;br /&gt;
** optionally if desired it may have additional parameters (they must all be of [http://en.wikipedia.org/wiki/Null-terminated_string C-string] and numeric types). &lt;br /&gt;
&lt;br /&gt;
* The deinit-function-name:&lt;br /&gt;
** is optional.&lt;br /&gt;
** must be declared prior to this pragma&#039;s declaration if it appears in pragma.&lt;br /&gt;
** must not have been used in any prior or subsequent SCL pragma.&lt;br /&gt;
** must have its first parameter declared as a pointer to the identified class.&lt;br /&gt;
&lt;br /&gt;
* Optionally if desired a set of setup/teardown fixtures could be applied.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct CClass_Basic_Simple {&lt;br /&gt;
  int   (*pf_TestMethod)(struct CClass_Basic_Simple* pcc);&lt;br /&gt;
} CClass_Basic_Simple;&lt;br /&gt;
&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
extern &amp;quot;C&amp;quot; {&lt;br /&gt;
#endif&lt;br /&gt;
void CClass_Basic_Simple_init(struct CClass_Basic_Simple* pcc);&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_cclass(CClass_Basic_Simple, CClass_Basic_Simple_init)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_test_flist ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;scl_test_flist&#039;&#039; pragma is used to declare a list of external functions as a &#039;&#039;&#039;Test Unit&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_test_flist(test-unit-name, function-1, function-2..n)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;test-unit-name&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| The name of the test unit. A special &#039;&#039;&#039;identifier&#039;&#039;&#039; with that name will be synthesized into which the list of external functions will be assembled. &lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039; this string may not contain a space.&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;function-1&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| Name of the first external function to be captured.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;function-2..n [Optional]&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| Optional names of second and subsequent external functions to be captured.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
* The external functions must meet the following conditions:&lt;br /&gt;
** Their parameter lists must be empty (void).&lt;br /&gt;
** They cannot be overloaded.&lt;br /&gt;
** They cannot be overloaded operators.&lt;br /&gt;
** They may not be template functions.&lt;br /&gt;
** They may throw exceptions when compiled in CPP mode.&lt;br /&gt;
** They cannot have been previously captured with the &#039;&#039;scl_function&#039;&#039; pragram or the &#039;&#039;scl_test_flist&#039;&#039; pragma. &lt;br /&gt;
** They cannot be &#039;&#039;public static class methods&#039;&#039;. &lt;br /&gt;
** They must return a pass/fail result. The return type may be declared void or an integer type (bool is acceptable in C++ mode). If void is the return type, any calls to the test function default to successful.&lt;br /&gt;
&lt;br /&gt;
* Once an external function has been captured with scl_test_flist, that function may not then be captured again with the &#039;&#039;scl_function&#039;&#039; pragma, or the &#039;&#039;scl_test_flist&#039;&#039; pragma, or used with any other qualification pragmas.&lt;br /&gt;
* Use of this pragma requires an include of &#039;&#039;srtest.h&#039;&#039;.&lt;br /&gt;
* The test-unit-name may not have been specified with a prior scl_test_flist pragma.&lt;br /&gt;
* The test-unit-name may not be the name of an existing routine.&lt;br /&gt;
* Optionally if desired a set of setup/teardown fixtures could be applied.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
extern &amp;quot;C&amp;quot; {&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
int test1();&lt;br /&gt;
int test2();&lt;br /&gt;
&lt;br /&gt;
#ifdef __cplusplus&lt;br /&gt;
}&lt;br /&gt;
#endif&lt;br /&gt;
 &lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_flist(&amp;quot;Foo&amp;quot;, test1, test2)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_test_setup ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;scl_test_setup&#039;&#039; pragma declares a member method to be a setup fixture for an existing &#039;&#039;&#039;Test Unit&#039;&#039;&#039;. The setup method will be called before the execution of each test method.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_test_setup(test-unit-name, function-name)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;test-unit-name&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| Name of a captured test unit.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;function-name&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| Name of a member function of the test unit to be used as a setup fixture. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* This pragma identifies the setup fixture of an existing test unit, i.e. either a class with &#039;&#039;scl_test_class&#039;&#039; applied to it, a set of functions with &#039;&#039;scl_test_flist&#039;&#039; applied to it, or a C struct with &#039;&#039;scl_test_cclass&#039;&#039; applied to it.&lt;br /&gt;
* There may be only one setup fixture per test unit.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
#include &amp;lt;srtest.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class MyTest {&lt;br /&gt;
public:&lt;br /&gt;
  void FooSetup();&lt;br /&gt;
  void CheckFoo();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_class(MyTest)&lt;br /&gt;
#pragma scl_test_setup(MyTest, FooSetup)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_test_teardown ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;scl_test_teardown&#039;&#039; pragma declares a member method to be a teardown fixture for an existing &#039;&#039;&#039;Test Unit&#039;&#039;&#039;. The teardown method will be called after the execution of each test method.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_test_teardown(test-unit-name, function-name)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;test-unit-name&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| Name of a captured test unit.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;function-name&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| Name of a member function of the test unit to be used as a teardown fixture. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* This pragma identifies the setup fixture of an existing test unit, i.e. either a class with &#039;&#039;scl_test_class&#039;&#039; applied to it, a set of functions with &#039;&#039;scl_test_flist&#039;&#039; applied to it, or a C struct with &#039;&#039;scl_test_cclass&#039;&#039; applied to it.&lt;br /&gt;
* There may be only one teardown fixture per test unit.&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;source lang=cpp&amp;gt;&lt;br /&gt;
class MyTest {&lt;br /&gt;
public:&lt;br /&gt;
  void FooSetup();&lt;br /&gt;
  void FooTeardown();&lt;br /&gt;
  void CheckFoo();&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_test_class(MyTest)&lt;br /&gt;
#pragma scl_test_setup(MyTest, FooSetup)&lt;br /&gt;
#pragma scl_test_teardown(MyTest, FooTeardown)&lt;br /&gt;
#endif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Pragmas&amp;diff=14698</id>
		<title>Pragmas</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Pragmas&amp;diff=14698"/>
		<updated>2018-07-17T20:48:09Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Stride pragmas are designed to allow annotation of C/C++ language constructs in such a way as to identify and define messages, function calls, and test units so that they can be transparently intercepted and remoted. During the build process the [[Build Tools | Stride Build Tools]] generate [[Intercept Module]] that provides [http://en.wikipedia.org/wiki/Test_harness harnessing] for the test.  &lt;br /&gt;
&lt;br /&gt;
For details regarding the supported pragmas refer to [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]] document.&lt;br /&gt;
&lt;br /&gt;
== scl_function ==&lt;br /&gt;
The &#039;&#039;scl_function&#039;&#039; pragma allows the user to capture a function. When captured for the purpose of interception (&#039;&#039;&#039;intercept-able&#039;&#039;&#039;) the optional arguments are used to specify how the intercept should be executed.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_function(function-name [,context][, name-mangling][, group-id])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;function-name&#039;&#039;&lt;br /&gt;
| Identifier&lt;br /&gt;
| Name of the function to capture.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;context&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Optional. Context in which the function is going to be intercepted. Possible values are &#039;&#039;&amp;quot;REFERENCE&amp;quot;&#039;&#039; - intercept at the function call (i.e. where the function is called) or &#039;&#039;&amp;quot;DEFINITION&amp;quot;&#039;&#039; - intercept at the function definition (i.e. where the function is implemented).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;name-mangling&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Optional. Type of [[Name_Mangling|name mangling]] to be used when intercepted. Possible values are &#039;&#039;&amp;quot;EXPLICIT&amp;quot;&#039;&#039; or &#039;&#039;&amp;quot;IMPLICIT&amp;quot;&#039;&#039;. If the &#039;&#039;context&#039;&#039; argument is defined the default will be &#039;&#039;&#039;IMPLICIT&#039;&#039;&#039;. Note that if &#039;&#039;&#039;EXPLICIT&#039;&#039;&#039; is set the &#039;&#039;&#039;srTEST_INTERCEPT(&#039;&#039;&#039;&amp;lt;function_name&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039; macro is required. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;group-id&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Optional. User defined identifier representing the group to which this function belongs when enabling interception. The default &#039;&#039;group-id&#039;&#039; is set to &#039;&#039;&#039;STRIDE_TEST_GROUP&#039;&#039;&#039;. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* The function must be declared as a designator with external linkage. &lt;br /&gt;
* A compilation error is reported if an attempt is made to capture a function more than once.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Using the default &amp;quot;IMPLICIT&amp;quot; &#039;&#039;name-mangling&#039;&#039; and &amp;quot;STRIDE_TEST_GROUP&amp;quot; &#039;&#039;group-id&#039;&#039; when capturing &amp;lt;code&amp;gt;boo()&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
int foo(int x);&lt;br /&gt;
&lt;br /&gt;
void boo(void);&lt;br /&gt;
&lt;br /&gt;
#pragma scl_function(foo)&lt;br /&gt;
#pragma scl_function(boo, &amp;quot;DEFINITION&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Setting a specific &#039;&#039;name-mangling&#039;&#039; and &#039;&#039;group-id&#039;&#039;&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
void boo(void);&lt;br /&gt;
&lt;br /&gt;
#pragma scl_function(boo, &amp;quot;DEFINITION&amp;quot;, &amp;quot;IMPLICIT&amp;quot;, &amp;quot;MY_TEST_GROUP&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_cast == &lt;br /&gt;
Constraining is the transformation of a data type so that it behaves like another data type. There are two forms of constraining: type constraining and value constraining (see &#039;&#039;scl_values&#039;&#039; pragma). &lt;br /&gt;
&lt;br /&gt;
Type constraining, as in the C language, has a source type and a destination type. The source type is the data type that is originally specified (e.g., written in the header file). The destination type is the data type into which the source type is being transformed. &lt;br /&gt;
&lt;br /&gt;
The scl_cast pragma is used for type constraining. It would commonly be used to map enumerations to other types, or to map a void pointer. The STRIDE host environment treats the constrained (or casted) field as if it were the new type, but the original type size is maintained.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
The following form changes the type inside the specified container (the function or structure):&lt;br /&gt;
 #pragma scl_cast(global-type-specifier, cast-type)&lt;br /&gt;
&lt;br /&gt;
The following form changes the type globally:&lt;br /&gt;
 #pragma scl_cast(container-specifier, field-specifier, cast-type)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;container-specifier&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the container of the field to be cast&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;field-specifier&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the field to be cast&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;cast-type&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the new type for the cast result&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;global-type-specifier&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the global type to be cast&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* scl_cast() can only be used to cast items that are of exactly the same size.&lt;br /&gt;
* scl_cast() can only be applied to the integral type and pointer type instances, or typedef names for integral types or pointer types. The type-specifier must designate a pointer type or integral type.&lt;br /&gt;
* scl_cast() can be used to cast a data item of type void* to a union type, if all members of the union are of type pointer.&lt;br /&gt;
* scl_cast() cannot be applied to bit fields.&lt;br /&gt;
* An error will result if scl_cast() is applied to a set of runtime values that intersects with the set of values explicitly specified by any pragma that has appeared earlier (by way of lexical position) in the source code. In other words, scl_cast() cannot be used to &amp;quot;cast away&amp;quot; information conveyed by previous pragmas. (Refer to section 1.2.16, Absolute Specifiers, in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]] for a description and definition of runtime value sets.)&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
int func(void *p); &lt;br /&gt;
&lt;br /&gt;
#pragma scl_function(func)&lt;br /&gt;
#pragma scl_cast(func, p, int *)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 2 ====&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef unsigned int u32_t; &lt;br /&gt;
typedef enum &lt;br /&gt;
{&lt;br /&gt;
  ONE = 1, &lt;br /&gt;
  TWO = 2, &lt;br /&gt;
  THREE = 3&lt;br /&gt;
} numbers_e; &lt;br /&gt;
&lt;br /&gt;
// cast occurrences of u32_t to numbers_e&lt;br /&gt;
#pragma scl_cast(u32_t, numbers_e)&lt;br /&gt;
&lt;br /&gt;
int func(u32_t x); &lt;br /&gt;
#pragma scl_function(func)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_conform ==&lt;br /&gt;
The scl_conform pragma allows the user to define a conformant array within a payload. The payload can be a C structure or a parameter declaration list. The conformant array must be the last item in the payload (e.g., the last field in the structure, or the last parameter in the declaration list). Because of this, only the payload name and the name of the size field in that payload are required. The SCL compiler automatically assumes the conformant array field within the specified payload. &lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;For an alternative use case of sized structure please look at scl_struct_sized pragma&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 #pragma scl_conform(name, size-name, max-size)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;name&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the structure or function that encapsulates the conformant array&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be used in an array.&lt;br /&gt;
* The structure type may not be a member of an union.&lt;br /&gt;
* The structure type may not be a member of any other structure unless it is the last member.&lt;br /&gt;
* The structure type may not be passed as a formal parameter or return value of a function (but a pointer to it is allowed).&lt;br /&gt;
* The structure type cannot reside within OUT memory block.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;size-name&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Name of the structure field or function parameter that contains the size of the array&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The type of the size-name must be an integral type.&lt;br /&gt;
* The size-field must reside within the same payload block as the structure or the function payload.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;max-size&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Maximum size of the conformant array&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
/* Constant defining the maximum array size */&lt;br /&gt;
#define MAX_BUFFER_SIZE 20&lt;br /&gt;
&lt;br /&gt;
/* Structure defining a message payload with a conformant array */&lt;br /&gt;
/* The array field must be the last member in the payload       */&lt;br /&gt;
typedef struct {&lt;br /&gt;
  int f1;&lt;br /&gt;
  short bufferSize;&lt;br /&gt;
  char  buffer[1];&lt;br /&gt;
} CmdPayload_t;&lt;br /&gt;
&lt;br /&gt;
/* Use the scl_conform pragma to define the conformant arrays */&lt;br /&gt;
#pragma scl_conform( CmdPayload_t, bufferSize, MAX_BUFFER_SIZE )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_ptr ==&lt;br /&gt;
&lt;br /&gt;
The scl_ptr pragma is used to identify a pointer data type and assign it pointer-specific attributes, such as marshaling direction and memory usage. &lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 #pragma scl_ptr(type-name, direction, usage)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_ptr(type-name, field-name, direction, usage)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Type&lt;br /&gt;
| Name of the type that contains the pointer. The container type can be a structure, union, the pointer type itself, or a function. If the container type is a structure or union, the pointer is a member and the field-name must be specified. If the container type is a function, then the pointer is a parameter and the field-name must be specified.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;field-name [Optional]&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Name of the pointer field, which may be a member field contained within a structure/union, or a parameter in the ParameterList of a function. &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;direction&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Direction in which the pointer data is marshaled; refer to the Pointer Direction Table below. This affects read and write access to the pointer data.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;usage&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Pointer usage indicator; refer to the Pointer Memory Usage Table below.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pointer Direction Table&#039;&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Value&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Meaning&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&amp;quot;IN&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory can be used only as input to the receiver of the pointer. The Owner of the interface may only consider this read-only memory.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;quot;OUT&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory can be used to output information. The memory is allocated by the User and only written to by the Owner.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;quot;INOUT&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory can be used as both input and output. The User may send in data when sending the command (or calling the function), and may read the Owner’s output upon receipt of the response (or return of the function).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;quot;RETURN&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory may be read by the User of the interface. The User may only consider this as read-only memory and must not free it.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;quot;INRETURN&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory is allocated by both user and owner. There is no single block of memory pointed to by an &amp;quot;INRETURN&amp;quot; pointer. Rather there is one block on the call (or message send) and a second block on the return (or completion of the two-way message). Thus the first block has the characteristics of an &amp;quot;IN&amp;quot; block and the second the characteristics of a &amp;quot;RETURN&amp;quot; block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pointer Memory Usage Table&#039;&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Value&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Meaning&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&amp;quot;PRIVATE&amp;quot;&#039;&#039;&lt;br /&gt;
| Pointer memory is private and may not be released by the Reader.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&amp;quot;POOL&amp;quot;&#039;&#039;&lt;br /&gt;
| Pointer memory is created from common pool and must be released by the Reader. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* A compiler error will be reported if an pointer does not point to a fixed size type.&lt;br /&gt;
* Response payloads cannot use the &amp;quot;OUT&amp;quot; or &amp;quot;INOUT&amp;quot; direction.&lt;br /&gt;
* Pointers with &amp;quot;OUT&amp;quot; or &amp;quot;INOUT&amp;quot; direction cannot indicate POOL pointer usage.&lt;br /&gt;
* One-way messages (command and response) cannot have data that contains an &amp;quot;OUT&amp;quot; or &amp;quot;INOUT&amp;quot; Pointer.&lt;br /&gt;
* The pointers declared type cannot be pointer to void; e.g., void *. This is considered an opaque pointer.&lt;br /&gt;
* For additional information on scl_ptr, including constraints, refer to the section on scl_ptr in the [[Media:s2sSCLReferenceGuide.pdf|SCL Reference Guide]].&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Two examples using the scl_ptr pragma are shown below:&lt;br /&gt;
&lt;br /&gt;
# The first example uses the scl_ptr pragma to assign pointer attributes to a structure member and a parameter list member.&lt;br /&gt;
# The second example uses the scl_ptr pragma to assign pointer attributes to type definitions.&lt;br /&gt;
&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
/* Typedef defining a structure with a member of type pointer to char */&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  int f1;&lt;br /&gt;
  char * f2;&lt;br /&gt;
}data_t;&lt;br /&gt;
&lt;br /&gt;
/* Function prototype with an &amp;quot;INOUT&amp;quot; pointer of type data_t */&lt;br /&gt;
void modifyData( data_t * p );&lt;br /&gt;
&lt;br /&gt;
/* Use the scl_function pragma to associate a SUID with the function ModifyData */&lt;br /&gt;
#pragma scl_function( modifyData )&lt;br /&gt;
/* Use the scl_ptr pragma to define the member f2 as a &amp;quot;RETURN&amp;quot; pointer */&lt;br /&gt;
#pragma scl_ptr( data_t.f2, &amp;quot;OUT&amp;quot;, &amp;quot;PRIVATE&amp;quot; )&lt;br /&gt;
/* Use the scl_ptr pragma to define the parameter p as an &amp;quot;INOUT&amp;quot; pointer */&lt;br /&gt;
#pragma scl_ptr( modifyData.p, &amp;quot;INOUT&amp;quot;, &amp;quot;PRIVATE&amp;quot; ) &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 2 ====&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
/* Typedef defining a pointer as a status type */&lt;br /&gt;
typedef int * StatusCode;&lt;br /&gt;
&lt;br /&gt;
/* Apply scl_ptr to the StatusCode type. It is always an &amp;quot;OUT&amp;quot; pointer type */&lt;br /&gt;
#pragma scl_ptr ( StatusCode, &amp;quot;OUT&amp;quot;, &amp;quot;PRIVATE&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
/* Prototype defining a function that returns a pointer to the data structure */&lt;br /&gt;
void GetStatus( StatusCode outCode );&lt;br /&gt;
&lt;br /&gt;
/* Mark getStatus as an SCL-compliant function */&lt;br /&gt;
#pragma scl_function ( GetStatus );&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_ptr_flist ==&lt;br /&gt;
&lt;br /&gt;
The scl_ptr_flist() pragma is used to specify the candidate functions that are available for a specific function pointer data type.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_ptr_flist(type-name, default-name)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_ptr_flist(type-name, field-name, default-name)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_ptr_flist(type-name, candidate-1, candidate-2..n)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_ptr_flist(type-name, field-name, candidate-1, candidate-2..n)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the type that contains the function pointer&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;field-name&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Name of the pointer member within the struct/union or in the parameter list of the function&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;candidate-1&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the candidate function&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;candidate-2..n [Optional]&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Optional name(s) of additional candidate function(s)&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;default-name&#039;&#039;&lt;br /&gt;
| Quoted string&lt;br /&gt;
| Name to be assigned to the default function (quoted string)&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* The syntax shown in form 1 of 4 above should only be used when function pointers are part of the command payload.&lt;br /&gt;
* The syntax shown in form 2 of 4 above should only be used when returning function pointers.&lt;br /&gt;
* A function pointer data type as written in ANSI C merely specifies the format of the prototype. The format of the prototype is the data type of the return value and the datatypes of the parameters, if any. The scl_ptr_flist() pragma is therefore required by the SCL compiler to indicate which SCL-compatible interfaces are associated with a particular function pointer data type.&lt;br /&gt;
* When a payload contains a field that is a pointer to a function, it is possible that the receiver of such a payload may make a call using the value received. Because the set of possible functions that might be passed is very large, and because all remotable methods must be identified with a SUID, each such payload value be constrained to identify the specific set of functions that might be passed. These are referred to as the candidates. Each candidate must be known by its name. The scl_ptr_flist() pragma is used for constraining fields of type pointer to function in this way.  &lt;br /&gt;
* Payload fields of type pointer to function that are not explicitly associated with a list of candidates are treated as if they have been declared as void *.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_ptr_opaque ==&lt;br /&gt;
&lt;br /&gt;
The scl_ptr_opaque pragma is used to specify a pointer data type as pointing to opaque data that should not be marshaled. &lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 #pragma scl_ptr_opaque(type-name)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_ptr_opaque(type-name, field-name)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Type&lt;br /&gt;
| Name of the type that contains the Pointer. The container type may be the name of a structure, a union, the pointer type itself, or a function. If the container type is a structure or a union, then the pointer is a member and the field-name must be specified. If the container type is a function, then the pointer is a parameter and the field-name must be specified.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;field-name [Optional]&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Name of the Pointer field, which may be a member field contained within a structure/union, or a parameter in the parameter list of a function. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* An opaque pointer is a pointer that points to opaque data. This means that the receiver of the pointer may not examine the data being pointed to. The meaningful part of an opaque pointer is the pointer value itself, or the pointer address. Opaque pointer are often used for the passing of handles.&lt;br /&gt;
* A pointer of type void (i.e., void *) is by default an opaque pointer. No pragma may be applied to a void pointer.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
Two examples using the scl_ptr_opaque pragma are shown below:&lt;br /&gt;
&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
The first example uses the scl_ptr_opaque pragma to declare a structure member and a parameter list member as an opaque pointer.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
// Typedef defining a structure with a member of type pointer to char //&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  int f1;&lt;br /&gt;
  char * f2;&lt;br /&gt;
}data_t;&lt;br /&gt;
&lt;br /&gt;
// Function prototype with an INOUT pointer of type data_t //&lt;br /&gt;
void modifyData( data_t * p );&lt;br /&gt;
&lt;br /&gt;
// Use the scl_function pragma to associate a SUID with the function ModifyData //&lt;br /&gt;
#pragma scl_function( modifyData )&lt;br /&gt;
// Use the scl_ptr_opaque pragma to define the member f2 as opaque //&lt;br /&gt;
#pragma scl_ptr_opaque( data_t.f2 )&lt;br /&gt;
// Use the scl_ptr_opaque pragma to define the parameter p as opaque //&lt;br /&gt;
#pragma scl_ptr_opaque( modifyData.p )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 2 ====&lt;br /&gt;
The second example uses the scl_ptr_opaque pragma to declare pointer type definitions as opaque.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
// Typedef defining a structure with two members //&lt;br /&gt;
typedef struct&lt;br /&gt;
{&lt;br /&gt;
  int f1;&lt;br /&gt;
  char f2;&lt;br /&gt;
}data_t;&lt;br /&gt;
&lt;br /&gt;
// Typedef defining a pointer to the data strucure //&lt;br /&gt;
typedef data_t * pointerToData;&lt;br /&gt;
// Prototype defining a function that returns a pointer to the data structure //&lt;br /&gt;
data_t * getData( void );&lt;br /&gt;
&lt;br /&gt;
// Use the scl_ptr_opaque pragma to define the type pointerToData as opaque //&lt;br /&gt;
#pragma scl_ptr_opaque( pointerToData )&lt;br /&gt;
// Use the scl_function pragma to associate a SUID with the function &amp;quot;getData&amp;quot; //&lt;br /&gt;
#pragma scl_function( getData )&lt;br /&gt;
// Use the scl_ptr pragma to define &amp;quot;getData&amp;quot; return value as opaque pointer //&lt;br /&gt;
#pragma scl_ptr_opaque( getData )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_ptr_sized ==&lt;br /&gt;
&lt;br /&gt;
The scl_ptr_sized pragma is used to identify a pointer data type, and assign to it attributes that are used to point to a series of elements allocated in contiguous memory. The pragma also assigns additional attributes, such as marshaling direction and memory usage.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 #pragma scl_ptr_sized(type-name, direction, usage, max-size)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_ptr_sized(type-name, direction, usage, max-size, size-field-name)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_ptr_sized(type-name, field-name, direction, usage, max-size)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_ptr_sized(type-name, field-name, direction, usage, max-size, size-field-name)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Type&lt;br /&gt;
| Name of the type that contains the pointer. The container type can be a structure, union, the pointer type itself, or a function. If the container type is a structure or union, the pointer is a member and the field-name must be specified. If the container type is a function, then the pointer is a parameter and the field-name must be specified.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;field-name [Optional]&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Name of the pointer field, which may be a member field contained within a structure/union, or a parameter in the parameter list of a function. &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;direction&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Direction in which the pointer data is marshaled; refer to the Pointer Direction Table below. This affects read and write access to the pointer data.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;usage&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Pointer usage indicator; refer to the Pointer Memory Usage Table below.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;max-size&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| An integer constant that specifies the maximum number of elements pointed to.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field-name&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| The name of the field that specifies the current number of elements pointed to.&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pointer Direction Table&#039;&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Value&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Meaning&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&amp;quot;IN&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory can be used only as input to the receiver of the pointer. The Owner of the interface may only consider this read-only memory.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;quot;OUT&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory can be used to output information. The memory is allocated by the User and only written to by the Owner.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;quot;INOUT&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory can be used as both input and output. The User may send in data when sending the command (or calling the function), and may read the Owner’s output upon receipt of the response (or return of the function).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;quot;RETURN&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory may be read by the User of the interface. The User may only consider this as read-only memory and must not free it.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&amp;quot;INRETURN&amp;quot;&#039;&#039;&lt;br /&gt;
| Specifies that the pointer memory is allocated by both user and owner. There is no single block of memory pointed to by an &amp;quot;INRETURN&amp;quot; pointer. Rather there is one block on the call (or message send) and a second block on the return (or completion of the two-way message). Thus the first block has the characteristics of an &amp;quot;IN&amp;quot; block and the second the characteristics of a &amp;quot;RETURN&amp;quot; block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pointer Memory Usage Table&#039;&#039;&#039;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Value&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Meaning&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&amp;quot;PRIVATE&amp;quot;&#039;&#039;&lt;br /&gt;
| Pointer memory is private and may not be released by the Reader.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&amp;quot;POOL&amp;quot;&#039;&#039;&lt;br /&gt;
| Pointer memory is created from common pool and must be released by the Reader. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* A sized pointer is a pointer to one or more elements of data. There are two types of sized pointers:&lt;br /&gt;
:# Fixed-sized always points to the same number of elements as specified by max-size.&lt;br /&gt;
:# Variable-sized points to a variable number of elements. The number of elements currently pointed to is indicated by size-field-name, which must be of type integer.&lt;br /&gt;
* If the sized pointer is &amp;quot;IN&amp;quot;, then size-field-name can be a non-pointer integer type; otherwise it must be a single pointer. In either case, the parameter size-field-name must have the same direction as its associated-sized pointer.&lt;br /&gt;
* The type of the pointer cannot be pointer to void; e.g. void *. This is considered an opaque pointer.&lt;br /&gt;
&lt;br /&gt;
=== Error Conditions ===&lt;br /&gt;
* A compiler error will be reported if a pointer does not point to a fixed size type.&lt;br /&gt;
* Sized pointers cannot use the &amp;quot;INOUT&amp;quot; direction.&lt;br /&gt;
* Response payloads cannot use the &amp;quot;OUT&amp;quot; or &amp;quot;INOUT&amp;quot; direction.&lt;br /&gt;
* Pointers with &amp;quot;OUT&amp;quot; or &amp;quot;INOUT&amp;quot; direction cannot indicate &amp;quot;POOL&amp;quot; pointer usage.&lt;br /&gt;
* One-way messages (command and response) cannot have data that contains an &amp;quot;OUT&amp;quot; or &amp;quot;INOUT&amp;quot; pointer.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
This example uses the scl_ptr_sized pragma to assign pointer attributes to a parameter list member.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
/* Constant defining the maximum buffer size */&lt;br /&gt;
#define MAX_BUFFER_SIZE 256&lt;br /&gt;
 &lt;br /&gt;
/* Function prototype with a sized IN pointer of type char */&lt;br /&gt;
void MemWrite( char * buffer, int size );&lt;br /&gt;
 &lt;br /&gt;
/* Function prototype with a sized OUT pointer of type char */&lt;br /&gt;
void MemRead ( char * buffer, int size );&lt;br /&gt;
 &lt;br /&gt;
/* Use the scl_function pragma to define the function prototypes */&lt;br /&gt;
#pragma scl_function(MemWrite)&lt;br /&gt;
#pragma scl_function(MemRead)&lt;br /&gt;
/* Use the scl_ptr_sized pragma to specify the attributes for the sized pointers */&lt;br /&gt;
/* Direction = &amp;quot;IN&amp;quot;, memory usage = &amp;quot;PRIVATE&amp;quot;, max size = 256, size field name = &amp;quot;size&amp;quot; */&lt;br /&gt;
#pragma scl_ptr_sized(MemWrite, buffer, &amp;quot;IN&amp;quot;, &amp;quot;PRIVATE&amp;quot;, MAX_BUFFER_SIZE, size)&lt;br /&gt;
 &lt;br /&gt;
/* Direction = &amp;quot;OUT&amp;quot;, memory usage = &amp;quot;PRIVATE&amp;quot;, max size = 256, size field name = &amp;quot;size&amp;quot; */&lt;br /&gt;
#pragma scl_ptr_sized(MemRead, buffer, &amp;quot;OUT&amp;quot;, &amp;quot;PRIVATE&amp;quot;, MAX_BUFFER_SIZE, size)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_string ==&lt;br /&gt;
&lt;br /&gt;
The scl_string pragma identifies a particular array type or pointer type as a string. The string type (ASCII or UNICODE) is derived from the element type (1-byte or 2-byte, respectively).&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 #pragma scl_string(type-name, max-size)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_string(type-name, field-name, max-size)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Type&lt;br /&gt;
| Name of the type that contains the array/pointer:&amp;lt;br&amp;gt;&lt;br /&gt;
* structure or union&amp;lt;br&amp;gt;&lt;br /&gt;
* the array/pointer type itself&amp;lt;br&amp;gt;&lt;br /&gt;
* function name&amp;lt;br&amp;gt;&lt;br /&gt;
If the container type is a structure or union and the array/pointer is a member, then field-name must be specified.  &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;field-name [Optional]&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Optional name of the array/pointer member contained within a structure/union, or the name of the pointer in the parameter list of a function.&amp;lt;br&amp;gt;&lt;br /&gt;
If type-name is a structure or union and the array/pointer is a member, then field-name must be specified.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;max-size&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Specifies the maximum length of the string.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
1. Use the scl_string pragma to specify type definitions as null terminated ASCII strings.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define MAX_STR_SIZE 100&lt;br /&gt;
&lt;br /&gt;
typedef char ArrayAsAsciiString_t[MAX_STR_SIZE];&lt;br /&gt;
#pragma scl_string( ArrayAsAsciiString_t, MAX_STR_SIZE )&lt;br /&gt;
&lt;br /&gt;
typedef char* PointerAsAsciiString_t; &lt;br /&gt;
#pragma scl_string( PointerAsAsciiString_t, MAX_STR_SIZE )&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
  char * pointerToAsciiString;&lt;br /&gt;
  char arrayAsAsciiString[MAX_STR_SIZE];&lt;br /&gt;
} Struct_t;&lt;br /&gt;
#pragma scl_string( Struct_t, pointerToAsciiString, MAX_STR_SIZE )&lt;br /&gt;
#pragma scl_string( Struct_t, arrayAsAsciiString, MAX_STR_SIZE )&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
2. Use the scl_string pragma to specify a function argument as null terminated ASCII string.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
void SetString(const char* pBuf);&lt;br /&gt;
#pragma scl_function(SetString)&lt;br /&gt;
#pragma scl_string(SetString.pBuf, MAX_STR_SIZE)&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
  char * pBuf;&lt;br /&gt;
} Struct_t;&lt;br /&gt;
void SetSructString(Struct_t tValue);&lt;br /&gt;
#pragma scl_function(SetSructString)&lt;br /&gt;
#pragma scl_string(SetSructString.tValue.pBuf, MAX_STR_SIZE)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3. Use the scl_string pragma to specify a function return value as null terminated ASCII string.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
const char* GetString(void);&lt;br /&gt;
#pragma scl_function(GetString)&lt;br /&gt;
#pragma scl_string(GetString(), MAX_STR_SIZE)&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
  char * pBuf;&lt;br /&gt;
} Struct_t;&lt;br /&gt;
Struct_t* GetSructString(void);&lt;br /&gt;
#pragma scl_function(GetSructString)&lt;br /&gt;
#pragma scl_string(GetSructString()-&amp;gt;pBuf, MAX_STR_SIZE)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_struct_sized ==&lt;br /&gt;
The scl_struct_sized pragma is used to identify a sized structure. A sized structure is a C programming convention for representing a structure whose size is variable and defined by one of the members of the structure. This pragma is infrequently used, but must be used, whenever the programmer defined size does not match the C language size of the structure (as calculated by the sizeof macro).&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;For an alternative use case of sized structure please look at scl_conform pragma.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 #pragma scl_struct_sized(type-name, size-field)&lt;br /&gt;
 &lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| width=&amp;quot;100&amp;quot; | &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;type-name&#039;&#039;&lt;br /&gt;
| Structure Type&lt;br /&gt;
| Identifies a structure type or structure instance whose runtime size is not the same as its C language size and contains a field whose value is the runtime size.&lt;br /&gt;
The following restrictions apply:&lt;br /&gt;
* The structure type may not be pointed to by a sized pointer.&lt;br /&gt;
* The structure type may not be used in an array.&lt;br /&gt;
* The structure type may not be a member of an union.&lt;br /&gt;
* The structure type may not be a member of any other structure unless it is the last member.&lt;br /&gt;
* The structure type may not be used as a formal parameter or return value of a function (but a pointer to it is allowed).&lt;br /&gt;
* The structure type cannot reside within OUT memory block.&lt;br /&gt;
* If the last member of the structure is an array, the array&#039;s size is calculated based upon max-size - (size of struct&#039;s other members).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;size-field&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| Identifies a field within the sized structure whose value determines the actual runtime size of the structure. The following restrictions apply:&lt;br /&gt;
* The type of the size-field must be an integral type.&lt;br /&gt;
* The value (at runtime) is expected to be greater than the type size of the structure (as determined by the sizeof macro).&lt;br /&gt;
* The size-field must reside within the same payload block as the sized structure.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Example 1 ====&lt;br /&gt;
This example shows the declaration for a simple sized struct.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int moreJunk;&lt;br /&gt;
} SimpleSizedStruct;&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_struct_sized(SimpleSizedStruct, size)&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 2 ====&lt;br /&gt;
This example shows the declaration of a sized struct containing a variable length array whose actual length is proportional to the value of the size field. In this case the array bound is declared as 1, but by convention is really controlled by the value of the size field. &lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
typedef struct {&lt;br /&gt;
    int size;&lt;br /&gt;
    int someJunk;&lt;br /&gt;
    int ary[1];  // variable length array whose length depends on the size&lt;br /&gt;
} ConformantArraySizedStruct;&lt;br /&gt;
&lt;br /&gt;
#ifdef _SCL&lt;br /&gt;
#pragma scl_struct_sized(ConformantArraySizedStruct, size)&lt;br /&gt;
#endif&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_union ==&lt;br /&gt;
&lt;br /&gt;
Unions are C language constructs that have a set of members, of which at most one can be stored in the union object at any time. The stored member is called the &amp;quot;active&amp;quot; member. The scl_union pragma identifies which union member is the active member when a union is part of a payload.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
&lt;br /&gt;
 #pragma scl_union(union-name, active-index)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_union(union-name, discriminant-specification)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_union(parent-name, union-name, active-index)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_union(parent-name, union-name, discriminant-specification)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;parent-name&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of structure encapsulating the union&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;union-name&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the union&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;active-index&#039;&#039;&lt;br /&gt;
| Integer&lt;br /&gt;
| Zero-based index for the active overlay&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;discriminant-specification&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Field name indicating the active overlay&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
For each union that is part of a message or function, there must be a means to determine which member is active. There are two basic methods for identification of the active member: &lt;br /&gt;
&lt;br /&gt;
:* One union member is designated as always active. The union will be treated as if this member is permanently active, there is no discriminant, nor any way to change the active member. &lt;br /&gt;
:* A secondary field is designated as the discriminant and its value determines which (if any) of the union members are active. &lt;br /&gt;
&lt;br /&gt;
==== Discriminants ====&lt;br /&gt;
Unions within the source code are easily identified by the &amp;quot;union&amp;quot; keyword. As discriminants are not easy to identify, the scl_union() pragma is necessary to identify them. The scl_union_activate pragma is optionally used to define a mapping between discriminant values and union members. &lt;br /&gt;
&lt;br /&gt;
Within a discriminated union, the discriminant value determines the active member of the union, resulting in a mapping between discriminant values and union members. A number of mapping choices are supported: &lt;br /&gt;
&lt;br /&gt;
:* In the simplest mapping, a discriminant value of n directly identifies the nth union member as active. In other words, a value of 0 would indicate the first union member, a value of 1 would indicate the second, etc. &lt;br /&gt;
:* If the discriminant is an enumerated type, it is possible to set up an association between enumeration constants and active members such that the nth enumeration constant (in declared order, not value order) maps to the nth union member.&lt;br /&gt;
:* It is also possible to create an explicit map between discriminant value sets and active members by specifying that a particular value or set of values maps to a specific member. &lt;br /&gt;
&lt;br /&gt;
The following constraints are enforced for the mapping between discriminant values and union members:&lt;br /&gt;
&lt;br /&gt;
:* A particular discriminant value may map only to a single union member. &lt;br /&gt;
:* A particular field may act as a discriminant for more than one union&lt;br /&gt;
:* A single union may only have a single discriminant field.&lt;br /&gt;
:* The type of the discriminant field must be an integer or enumerated type or must have been cast (using scl_cast()) to an integer or enumerated type. &lt;br /&gt;
:* The scl_values() pragma applied to the discriminant field affects the default mapping between discriminant values and union members.&lt;br /&gt;
&lt;br /&gt;
==== Default Mapping ====&lt;br /&gt;
As mentioned previously, the scl_union() pragma is used to identify the discriminant for a union and scl_union_activate() is used to map discriminant values to union members.  If there are no scl_union_activate() pragmas for a particular discriminated union, then the mapping between the discriminant and members is said to be default. The default mapping depends on the type of the discriminant: &lt;br /&gt;
&lt;br /&gt;
:* If the discriminant is one of the standard integer types, or has been cast to one of the standard integer types using scl_cast(), then the value of the discriminant identifies the position of the active member; i.e., a value of 0 indicates the first union member, a value of 1 the second, etc. &lt;br /&gt;
:* If the discriminant is an enumerated type or has been cast to an enumerated type, or has had a set of constant values prescribed using scl_values(), then each constant has both a value and a position within the list. It is the position, rather than the value, that identifies the active member. When the discriminant takes on the value of the constant from position n, the nth union member is active. In the case of two constants from the same list have the same value, but different positions, an error is recognized. &lt;br /&gt;
&lt;br /&gt;
==== Explicit Mappings ====&lt;br /&gt;
A union that has at least one scl_union_activate() pragma applied to it is said to have an explicit mapping. When a union has an explicit mapping, there is no default mapping; rather all mapping between discriminant values and union members is prescribed by the set of scl_union_activate() pragmas for the unions. For more details on using scl_union_activate(), click [[scl_union_activate|here]]. &lt;br /&gt;
&lt;br /&gt;
==== Internal and External Discriminants ====&lt;br /&gt;
A union’s discriminant is either internal or external. A union has an external discriminant if the discriminant field is not contained within the union. &lt;br /&gt;
&lt;br /&gt;
An internal discriminant is one that is located inside the union. If a union has an internal discriminant the following must be true: &lt;br /&gt;
:* Every member of the union must have a field that corresponds to the internal discriminant. All such fields must be of exactly the same type, or they must have had exactly the same scl_cast() or scl_values() specifications applied. Furthermore, all such fields must be positioned in exactly the same memory location within the union.  If they are located in a payload block other than the one containing the union, then the expression &amp;quot;path&amp;quot; leading to  each must be the same in the sense that all corresponding pointers across all the members have exactly the same offsets.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
The following examples illustrate how various discriminant values map to the active member for discriminated unions:&lt;br /&gt;
&lt;br /&gt;
==== Example 1: Default mapping ====&lt;br /&gt;
Discriminant is an integral type. A value of n maps to the nth union member. Members are numbered beginning with zero (0).&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
  int disc;&lt;br /&gt;
  union {&lt;br /&gt;
    int i;&lt;br /&gt;
    float f;&lt;br /&gt;
  } u;&lt;br /&gt;
} S1t;&lt;br /&gt;
 &lt;br /&gt;
#pragma scl_union(S1t.u, S1t.disc)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 2: Enum-based ====&lt;br /&gt;
Discriminant is an enumerated type. The nth enumeration constant (in declared order, not value order) maps to the nth union member.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef enum {&lt;br /&gt;
  IDX_FIRST  = 20,&lt;br /&gt;
  IDX_SECOND = 4&lt;br /&gt;
} e_t;&lt;br /&gt;
 &lt;br /&gt;
typedef struct {&lt;br /&gt;
  e_t disc;&lt;br /&gt;
  union {&lt;br /&gt;
    int i;&lt;br /&gt;
    float f;&lt;br /&gt;
  } u;&lt;br /&gt;
} S2t;&lt;br /&gt;
 &lt;br /&gt;
#pragma scl_union(S2t.u, S2t.disc)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 3: Explicit mapping ====&lt;br /&gt;
Discriminant values are explicitly mapped to active union members using scl_union_activate().&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
// In the following union:&lt;br /&gt;
//     discriminant == 4 means &#039;i&#039; is active&lt;br /&gt;
//     discriminant == 5 means &#039;f&#039; is active&lt;br /&gt;
typedef struct {&lt;br /&gt;
  int discriminant;&lt;br /&gt;
  union {&lt;br /&gt;
    int i;&lt;br /&gt;
    float f;&lt;br /&gt;
  } u;&lt;br /&gt;
} S;&lt;br /&gt;
 &lt;br /&gt;
#pragma scl_union (S.u, S.discriminant)&lt;br /&gt;
#pragma scl_union_activate (S.u, i, 4)&lt;br /&gt;
#pragma scl_union_activate(S.u, f, 5)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 4: Discriminant values constrained to enumeration types ====&lt;br /&gt;
An integer-based discriminant is constrained (using scl_values) to an enumerated type. This sets up an enum-based mapping as described in Example 2.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
// In the following union:&lt;br /&gt;
//     discriminant == RED means &#039;i&#039; is active&lt;br /&gt;
//     discriminant == GREEN means &#039;f&#039; is active&lt;br /&gt;
//     discriminant == BLUE means &#039;d&#039; is active&lt;br /&gt;
typedef enum {&lt;br /&gt;
  RED,&lt;br /&gt;
  GREEN,&lt;br /&gt;
  BLUE&lt;br /&gt;
} COLOR;&lt;br /&gt;
 &lt;br /&gt;
typedef struct {&lt;br /&gt;
  int discriminant;&lt;br /&gt;
  union {&lt;br /&gt;
    int i;&lt;br /&gt;
    float f;&lt;br /&gt;
    double d;&lt;br /&gt;
  } u;&lt;br /&gt;
} S;&lt;br /&gt;
 &lt;br /&gt;
#pragma scl_union (S.u, S.discriminant)&lt;br /&gt;
#pragma scl_values (S.discriminant, COLOR)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
==== Example 5: Default undiscriminated union ====&lt;br /&gt;
The union does not have a discriminant. The first member is always assumed to be active.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
//In the following union:&lt;br /&gt;
//   &#039;i&#039; is always treated as active&lt;br /&gt;
typedef struct {&lt;br /&gt;
  union {&lt;br /&gt;
    int i;&lt;br /&gt;
    float f;&lt;br /&gt;
  } u;&lt;br /&gt;
} S6t;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 6: Explicitly prescribed fixed active member for undiscriminated union ====&lt;br /&gt;
The union does not have a discriminant. scl_union is used to prescribe a specific member as always active.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
  union {&lt;br /&gt;
    int i;&lt;br /&gt;
    float f;&lt;br /&gt;
    char bytes[4];&lt;br /&gt;
  } u;&lt;br /&gt;
} S6t;&lt;br /&gt;
 &lt;br /&gt;
/* Select field &amp;quot;bytes&amp;quot; as the default member */&lt;br /&gt;
#pragma scl_union(S6t.u, 2)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 7: Internal discriminant ====&lt;br /&gt;
An internal discriminant is located inside the union.&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
// Union with internal discriminant:&lt;br /&gt;
//     discriminant == 0     &#039;um0&#039; is active member&lt;br /&gt;
//     discriminant == 1     &#039;um1&#039; is active member&lt;br /&gt;
//     discriminant == 2     &#039;um2&#039; is active member&lt;br /&gt;
typedef struct {&lt;br /&gt;
  int discriminant;&lt;br /&gt;
} HEADER;&lt;br /&gt;
 &lt;br /&gt;
typedef struct {&lt;br /&gt;
  HEADER h;&lt;br /&gt;
  int x;&lt;br /&gt;
} UNION_MEMBER_0;&lt;br /&gt;
 &lt;br /&gt;
typedef struct {&lt;br /&gt;
  HEADER h;&lt;br /&gt;
  float f;&lt;br /&gt;
} UNION_MEMBER_1;&lt;br /&gt;
 &lt;br /&gt;
typedef struct {&lt;br /&gt;
  HEADER h;&lt;br /&gt;
  double d;&lt;br /&gt;
} UNION_MEMBER_2;&lt;br /&gt;
 &lt;br /&gt;
typedef union {&lt;br /&gt;
  UNION_MEMBER_0   um0;&lt;br /&gt;
  UNION_MEMBER_1   um1;&lt;br /&gt;
  UNION_MEMBER_2   um2;&lt;br /&gt;
} U;&lt;br /&gt;
 &lt;br /&gt;
#pragma scl_union(U, U.um0.h.discriminant)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 8: Explicit mapping of multiple discriminant values to a single active member ====&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef struct {&lt;br /&gt;
  int a;&lt;br /&gt;
  int b;&lt;br /&gt;
} type1_t;&lt;br /&gt;
    &lt;br /&gt;
typedef struct {&lt;br /&gt;
  float x;&lt;br /&gt;
  float y;&lt;br /&gt;
} type2_t;&lt;br /&gt;
    &lt;br /&gt;
typedef struct {&lt;br /&gt;
  char c1;&lt;br /&gt;
  char c2;&lt;br /&gt;
} type3_t;&lt;br /&gt;
    &lt;br /&gt;
typedef enum {&lt;br /&gt;
  ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE&lt;br /&gt;
} discriminant_t;&lt;br /&gt;
    &lt;br /&gt;
typedef struct {&lt;br /&gt;
  discriminant_t d;&lt;br /&gt;
  int e;&lt;br /&gt;
  union {&lt;br /&gt;
    type1_t m1;    // active when d == ONE or d == TWO or d == THREE&lt;br /&gt;
    type2_t m2;    // active when d == FOUR or d == SIX or d == EIGHT&lt;br /&gt;
    type3_t m3;    // active when d == FIVE or d == SEVEN&lt;br /&gt;
  } u_main;&lt;br /&gt;
} s_t;&lt;br /&gt;
&lt;br /&gt;
#pragma scl_union (s_t.u_main, s_t.d)&lt;br /&gt;
#pragma scl_union_activate(s_t.u_main, m1, ONE, TWO, THREE)&lt;br /&gt;
#pragma scl_union_activate(s_t.u_main, m2, FOUR, SIX, EIGHT)&lt;br /&gt;
#pragma scl_union_activate(s_t.u_main, m3, FIVE, SEVEN)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 9: Unmapped discriminant values indicating no member is active ====&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
//Union unmapped discriminant values&lt;br /&gt;
//&lt;br /&gt;
//     discriminant == ZERO                  &#039;i&#039; is active member&lt;br /&gt;
//     discriminant == ONE                   &#039;f&#039; is active member&lt;br /&gt;
//     discriminant == TWO                   &#039;d&#039; is active member&lt;br /&gt;
//     discriminant == THREE or FOUR&lt;br /&gt;
//                     FIVE or SIX or SEVEN      no active member&lt;br /&gt;
typedef enum {&lt;br /&gt;
  ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN&lt;br /&gt;
} ENUM_TYPE;&lt;br /&gt;
    &lt;br /&gt;
typedef struct {&lt;br /&gt;
  ENUM_TYPE discriminant;&lt;br /&gt;
  union {&lt;br /&gt;
    int    i;&lt;br /&gt;
    float  f;&lt;br /&gt;
    double d;&lt;br /&gt;
  } u;&lt;br /&gt;
} S;&lt;br /&gt;
&lt;br /&gt;
#pragma scl_union (S.u, S.discriminant)&lt;br /&gt;
#pragma scl_union_activate(S.u, i, ZERO)&lt;br /&gt;
#pragma scl_union_activate(S.u, f, ONE)&lt;br /&gt;
#pragma scl_union_activate(S.u, d, TWO)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 10: Discriminant values defined by macros ====&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
//One field discriminating multiple unions &lt;br /&gt;
//&lt;br /&gt;
//     discriminant == 1                   &#039;i&#039; is active member&lt;br /&gt;
//     discriminant == 2                   &#039;f&#039; is active member&lt;br /&gt;
//     discriminant == 3                   &#039;d&#039; is active member&lt;br /&gt;
//  &lt;br /&gt;
#define ONE   1&lt;br /&gt;
#define TWO   2&lt;br /&gt;
#define THREE 3&lt;br /&gt;
    &lt;br /&gt;
typedef struct {&lt;br /&gt;
  int discriminant;&lt;br /&gt;
  union {&lt;br /&gt;
    int    i;&lt;br /&gt;
    float  f;&lt;br /&gt;
    double d;&lt;br /&gt;
  } u;&lt;br /&gt;
} S;&lt;br /&gt;
    &lt;br /&gt;
#pragma scl_union (S.u, S.discriminant)        // uses 2-parameter form of scl_union&lt;br /&gt;
#pragma scl_union_activate (S.u, i, ONE)       // the first parameter identifies the union, the second a member in it. &lt;br /&gt;
#pragma scl_union_activate (S.u, f, TWO)&lt;br /&gt;
#pragma scl_union_activate (S.u, d, THREE)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_union_activate ==&lt;br /&gt;
&lt;br /&gt;
The scl_union_activate pragma provides a means to map discriminant values to specific union members. It can only apply to discriminated unions that have been identified by the scl_union pragma. &lt;br /&gt;
&lt;br /&gt;
A single scl_union_activate pragma prescribes the set of values for the discriminant and the member that is active for those values. &lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 #pragma scl_union_activate(container-specifier, union-member-specifier, constant-value-list)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;container-specifier&#039;&#039;&lt;br /&gt;
| Type&lt;br /&gt;
| Name of the structure encapsulating the union&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;union-member-specifier&#039;&#039;&lt;br /&gt;
| Member&lt;br /&gt;
| The active member of the union&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;constant-value-list&#039;&#039;&lt;br /&gt;
| Integer constant expression list&lt;br /&gt;
| List of the constant expressions that the discriminant takes on to activate the union member identified in this pragma&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
:* The discriminant field use in scl_union_activate must have already been identified with the &#039;&#039;scl_union&#039;&#039; pragma.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Refer to the following &#039;&#039;scl_union&#039;&#039; pragma examples of the &#039;&#039;scl_union_activate&#039;&#039; pragma:&lt;br /&gt;
:* &#039;&#039;Explicit mapping&#039;&#039;: Discriminant values are explicitly mapped to active union members using scl_union_activate().&lt;br /&gt;
:* &#039;&#039;Explicit mapping of multiple discriminant values to a single active member&#039;&#039;.&lt;br /&gt;
:* &#039;&#039;Unmapped discriminant values indicating no member is active&#039;&#039;.&lt;br /&gt;
:* &#039;&#039;Discriminant values defined by macros&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== scl_values ==&lt;br /&gt;
&lt;br /&gt;
The scl_values pragma allows a data item to be constrained to a particular set of values.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
 #pragma scl_values(global-type-specifier, values-type)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_values(container-specifier, field-specifier, values-type)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_values(container-specifier, field-specifier, values-value-1, values-value-2..n)&lt;br /&gt;
 &lt;br /&gt;
 #pragma scl_values(global-type-specifier, values-value-1, values-value-2..n)&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;&amp;quot;  &lt;br /&gt;
| &#039;&#039;&#039;Parameters&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Type&#039;&#039;&#039;&lt;br /&gt;
| &#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;global-specifier&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the global type to be constrained.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;values-type&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Name of the type that enumerates the range of values to which the data item is constrained.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;container-specifier&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Partial identification of the field to be constrained. The container_specifier in combination with the field_specifier completely identify the field to be constrained. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;field-specifier&#039;&#039;&lt;br /&gt;
| String&lt;br /&gt;
| Together with the container specifier, completes the identity of the field whose values are to be constrained.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;values-value-1&#039;&#039;&lt;br /&gt;
| Constant expression&lt;br /&gt;
| First constant expression to which the data item&#039;s value will be constrained.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;values-value-2..n [Optional]&#039;&#039;&lt;br /&gt;
| Constant expression list&lt;br /&gt;
| Optional second and subsequent constant expressions, adding to the set of values to which the data item&#039;s value will be constrained. These expressions must be comma separated.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* The scl_values pragma may only be applied to items that are of integral type (e.g., signed/unsigned char, short, int, and long), and pointers that have had the scl_ptr_opaque pragma applied to them.&lt;br /&gt;
* Each value in the values list is assigned both a symbolic name and an integral value. The symbolic name is: &lt;br /&gt;
** The macro name if the value is defined by a macro (the macro name must be a non-parameterized macro).&lt;br /&gt;
** The enumerated constant name if the value is an enumeration constant. &lt;br /&gt;
** If the constant is not a simple macro name or enumerated constant name (i.e., it is some kind of expression) then the name is the constant expressed as a decimal number, including its sign if the value is negative. &lt;br /&gt;
* Two values in the number-list may not have the same symbolic name. &lt;br /&gt;
* scl_values() does not change the underlying type of the instances to which it is applied. If those instances are referenced by other pragmas, the type is unaffected; however, the instances will have constrained values.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
&lt;br /&gt;
==== Example 1: Integer field constrained to enumeration values ====&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
typedef enum {&lt;br /&gt;
  RED,&lt;br /&gt;
  GREEN,&lt;br /&gt;
  BLUE&lt;br /&gt;
} COLOR;&lt;br /&gt;
 &lt;br /&gt;
int f(int x);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_values(f.x, COLOR)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example 2: Integer field constrained to a specific set of integer values ====&lt;br /&gt;
&amp;lt;source lang=c&amp;gt;&lt;br /&gt;
#define FIRST  23&lt;br /&gt;
#define SECOND 44&lt;br /&gt;
#define THIRD  50&lt;br /&gt;
#define FOURTH -5&lt;br /&gt;
 &lt;br /&gt;
int f(int x);&lt;br /&gt;
#pragma scl_function(f)&lt;br /&gt;
#pragma scl_values(f.x, FIRST, SECOND, THIRD, FOURTH)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Stride_Sandbox&amp;diff=14697</id>
		<title>Stride Sandbox</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Stride_Sandbox&amp;diff=14697"/>
		<updated>2018-07-17T18:31:01Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Stride&#039;s cross-platform capabilities make it possible to use Stride in a &#039;&#039;&#039;host-only&#039;&#039;&#039; configuration called the &#039;&#039;&#039;Sandbox&#039;&#039;&#039;. This environment facilitates &#039;&#039;self-training&#039;&#039;, &#039;&#039;evaluations&#039;&#039;, and &#039;&#039;trying stuff&#039;&#039;. It frees you from external hardware dependencies and provides for a rapid &#039;&#039;edit-build-test&#039;&#039; cycle.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Sandbox&#039;&#039;&#039; utilizes the framework&#039;s SDK that can be built and executed on the host system. When using the SDK Makefile a simulated target &#039;&#039;native application&#039;&#039; is generated, which we call a &#039;&#039;&#039;Test Application (TestApp)&#039;&#039;&#039;. The Stride Runner application executes on the same host and communicates with the &#039;&#039;&#039;TestApp&#039;&#039;&#039; process over a TCP/IP connection. &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Sandbox&#039;&#039;&#039; requires the Stride framework package to be setup on your desktop. Refer to the [[Framework Setup | Framework Setup]] article for more information. It also requires that your desktop contains one of the following &#039;&#039;&#039;compilers&#039;&#039;&#039;:&lt;br /&gt;
* For Windows, Microsoft Visual Studio 2008 or later is required. If you don&#039;t already have Visual Studio, the free [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio_Express Visual C++ Express] can be used (download [https://visualstudio.microsoft.com/vs/express/ here]). &amp;lt;i&amp;gt;In case you have [http://www.cygwin.com Cygwin] installed, the [http://en.wikipedia.org/wiki/GNU_Compiler_Collection GNU Compiler Collection] could be used as an alternative.&amp;lt;/i&amp;gt;&lt;br /&gt;
* For Linux and FreeBSD, the [http://en.wikipedia.org/wiki/GNU_Compiler_Collection GNU Compiler Collection] (included by default in almost all distros) is required.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
=== SDK Makefile ===&lt;br /&gt;
The SDK Makefile is set up by &#039;&#039;default&#039;&#039; so that all &amp;lt;tt&amp;gt;.c&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;.cpp&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.h&amp;lt;/tt&amp;gt; files found in the directory &amp;lt;tt&amp;gt;SDK\Windows\sample_src&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;SDK/Posix/sample_src&amp;lt;/tt&amp;gt; for Linux/FreeBSD) are included in the compile and link of the &#039;&#039;&#039;testapp&#039;&#039;&#039; target.&lt;br /&gt;
&lt;br /&gt;
Further--as a pre-compilation step--any &amp;lt;tt&amp;gt;.h&amp;lt;/tt&amp;gt; files found in &amp;lt;tt&amp;gt;sample_src&amp;lt;/tt&amp;gt; are submitted to the [[STRIDE Build Tools]]. This will result in &lt;br /&gt;
* the detection of [[Test Pragmas| test pragmas]] used to declare Test Suites in these &amp;lt;tt&amp;gt;.h&amp;lt;/tt&amp;gt; files&lt;br /&gt;
* the generation of a database (&amp;lt;tt&amp;gt;.sidb&amp;lt;/tt&amp;gt;) file required for executing tests&lt;br /&gt;
* the generation of an [[Intercept Module]] required for executing tests&lt;br /&gt;
&lt;br /&gt;
=== Build Steps ===&lt;br /&gt;
To begin, be sure that TestApp is not running then perform the following steps:&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;If you experience any build problem please make sure to read [[Troubleshooting Build Problems]] for possible resolution.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Linux/FreeBSD====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build the test app using GNU make&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -C &amp;quot;$STRIDE_DIR/SDK/Posix/src&amp;quot; testapp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Note that the following artifacts are produced by the build:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;tt&amp;gt;$STRIDE_DIR/SDK/Posix/out/bin/TestApp&amp;lt;/tt&amp;gt;&lt;br /&gt;
: the test application&lt;br /&gt;
;&amp;lt;tt&amp;gt;$STRIDE_DIR/SDK/Posix/out/TestApp.sidb&amp;lt;/tt&amp;gt;&lt;br /&gt;
: the STRIDE interface database file which contains metadata describing the interfaces remoted by the test app (along with other data)&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
NOTE: &#039;&#039;In case you have [http://www.cygwin.com Cygwin] and [http://en.wikipedia.org/wiki/GNU_Compiler_Collection GNU Compiler Collection] installed and prefer to use it, please follow the build steps for Linux (see previous section) and ignore the one in here.&#039;&#039;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If using Microsoft Visual Studio, open a [http://msdn.microsoft.com/en-us/library/ms235639(v=vs.100).aspx Visual Studio Command Prompt] to ensure that the compiler and linker are on your PATH.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build the test app using the supplied GNU make. (You will get Makefile errors if you use the default make.)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;%STRIDE_DIR%\SDK\Windows\bin\make&amp;quot; -C &amp;quot;%STRIDE_DIR%\SDK\Windows\src&amp;quot; testapp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Note that the following artifacts are produced by the build:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;tt&amp;gt;%STRIDE_DIR%\SDK\Windows\out\bin\TestApp.exe&amp;lt;/tt&amp;gt;&lt;br /&gt;
: the test application&lt;br /&gt;
;&amp;lt;tt&amp;gt;%STRIDE_DIR%\SDK\Windows\out\TestApp.sidb&amp;lt;/tt&amp;gt;&lt;br /&gt;
: the STRIDE interface database file which contains metadata describing the interfaces remoted by the test app (along with other data)&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
The test app we just built does not have any user tests in it. At this point it provides a starting point for test that we will subsequently add.&lt;br /&gt;
&lt;br /&gt;
However, a set of diagnostic tests that verify operation of the STRIDE runtime itself are always built into the generated TestApp executable. If desired (we recommend you to do so) you could run them by doing the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Invoke the TestApp. In order to see TestApp&#039;s output, we recommend that you manually run in a console window (or Windows equivalent): &lt;br /&gt;
;Linux/FreeBSD&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$STRIDE_DIR/SDK/Posix/out/bin/TestApp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
;Windows&lt;br /&gt;
&amp;lt;source lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
%STRIDE_DIR%\SDK\Windows\out\bin\TestApp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(...or launch from the file explorer)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Note TestApp&#039;s output upon startup.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
STRIDE Test Console Application.&lt;br /&gt;
Enter &#039;Ctrl+C&#039; to Quit.&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Listening on TCP port 8000&lt;br /&gt;
starting up...&lt;br /&gt;
&amp;quot;_srThread&amp;quot; thread started.&lt;br /&gt;
&amp;quot;stride&amp;quot; thread started.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;From a second console window, invoke &amp;lt;tt&amp;gt;[[STRIDE_Runner|stride]]&amp;lt;/tt&amp;gt; as follows, to verify connectivity with the test app and STRIDE runtime operation:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
;Linux/FreeBSD&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics --database=&amp;quot;$STRIDE_DIR/SDK/Posix/out/TestApp.sidb&amp;quot; --device=TCP:localhost:8000 --run=&amp;quot;*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
;Windows&lt;br /&gt;
&amp;lt;source lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics --database=&amp;quot;%STRIDE_DIR%\SDK\Windows\out\TestApp.sidb&amp;quot; --device=TCP:localhost:8000 --run=&amp;quot;*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the tests run you will see output in both the TestApp (target) and stride (host) console windows.&lt;br /&gt;
&lt;br /&gt;
The host console window output is shown here:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
Connecting to device (TCP:localhost:8000)...&lt;br /&gt;
  runtime version: 5.0.xy &lt;br /&gt;
  test suite &amp;quot;/Link&amp;quot;&lt;br /&gt;
    Loopback ..........&lt;br /&gt;
    Payload Fragmentation&lt;br /&gt;
    Stub-Proxy Deadlock&lt;br /&gt;
    Target Characteristics&lt;br /&gt;
    &amp;gt; 4 passed, 0 failed, 0 in progress, 0 unknown, 0 not in use, 777.77 ms.&lt;br /&gt;
  test suite &amp;quot;/Stat&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 unknown, 0 not in use, 74.98 ms.&lt;br /&gt;
  test suite &amp;quot;/Time&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 unknown, 0 not in use, 2559.23 ms.&lt;br /&gt;
Disconnecting from device...&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Summary: 8 passed, 0 failed, 0 in progress, 0 unknown, 0 not in use, 3411.98 ms.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Note the Summary results shown in the host output; all in use tests should pass.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To exit TestApp, give the target window focus and enter &amp;lt;tt&amp;gt;Ctrl-C&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Build Problems==&lt;br /&gt;
This page describes several common problems encountered when building a STRIDE TestApp using the Sandbox and suggested solutions.&lt;br /&gt;
&lt;br /&gt;
=== Make Error 1 ===&lt;br /&gt;
;Symptom&lt;br /&gt;
On Windows, when attempting to build the testapp from the command line, you encounter an error indicating that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
‘cl’ is not recognized as an internal or external command,&lt;br /&gt;
operable program or batch file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\STRIDE\SDK\Windows\src&amp;gt;..\bin\make.exe testapp&lt;br /&gt;
cl -c -nologo -W4 -D_UNICODE -DUNICODE -DWIN32 -D_CONSOLE -DUNDER_NT -I”.” -I”../../Runtime” -I”../../SLAP” -I”../../GRS” -I”../o&lt;br /&gt;
ut/src” -I”../sample_src” -GS -Zi -DNDEBUG -MD -O2 -D_LIB -DSTRIDE_STATIC -Fd”../out/desktop-Windows_NT-obj//cl.pdb” -Fo”../out/desktop-Windows_NT-o&lt;br /&gt;
bj/srapi.o” ”../../Runtime/srapi.c” &lt;br /&gt;
‘cl’ is not recognized as an internal or external command,&lt;br /&gt;
operable program or batch file.&lt;br /&gt;
make: *** [../out/desktop-Windows_NT-obj/srapi.o] Error 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
Microsoft Visual Studio 2008 or later is not installed or you are not building from a [http://msdn.microsoft.com/en-us/library/ms235639(v=VS.90).aspx Visual Studio Command Prompt]. &lt;br /&gt;
&lt;br /&gt;
;Solution&lt;br /&gt;
Make sure you have Microsoft Visual Studio 2008 or later installed.&lt;br /&gt;
&lt;br /&gt;
To ensures that the compiler and linker are on your PATH open a Visual Studio Command prompt: &lt;br /&gt;
* Click the Start button, point to All Programs, Microsoft Visual Studio 20XX, Visual Studio Tools, and then click Visual Studio 20XX Command Prompt.&lt;br /&gt;
&lt;br /&gt;
=== Make Error 2 ===&lt;br /&gt;
;Symptom&lt;br /&gt;
On Windows, when attempting to build the testapp from the command line the following errors are observed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syntax error near unexpected token `(&#039;&lt;br /&gt;
syntax error near unexpected token `(&#039;&lt;br /&gt;
syntax error: unexpected end of file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\stride\SDK\Windows\src&amp;gt;..\bin\make testapp&lt;br /&gt;
/bin/sh: -c: line 0: syntax error near unexpected token `(&#039;&lt;br /&gt;
/bin/sh: -c: line 0: `IF EXIST ../out. (IF NOT EXIST ../out/src mkdir &amp;quot;../out/src&amp;quot;) ELSE mkdir &amp;quot;../out&amp;quot; &amp;amp;&amp;amp; mkdir &amp;quot;../out/src&amp;quot;.&#039;&lt;br /&gt;
/bin/sh: -c: line 0: syntax error near unexpected token `(&#039;&lt;br /&gt;
/bin/sh: -c: line 0: `IF EXIST ../out. (IF NOT EXIST ../out/src mkdir &amp;quot;../out/src&amp;quot;) ELSE mkdir &amp;quot;../out&amp;quot; &amp;amp;&amp;amp; mkdir &amp;quot;../out/src&amp;quot;.&#039;&lt;br /&gt;
/bin/sh: -c: line 1: syntax error: unexpected end of file&lt;br /&gt;
make: *** [cleanapp] Error 258&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
This error occurs because gnu make on Windows will search for an Unix shell (&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;csh&amp;lt;/tt&amp;gt;) anywhere in your PATH when executing shell commands and only default to DOS shell (&amp;lt;tt&amp;gt;cmd.exe&amp;lt;/tt&amp;gt;) when no Unix shell is found. The sandbox Makefile uses DOS shell syntax, so when a Unix shell is found on your PATH, this results to errors like above.&lt;br /&gt;
&lt;br /&gt;
Most commonly, this problem is caused by an installation of [http://en.wikipedia.org/wiki/Cygwin Cygwin], though it can also be caused by an installation of the QNX Software Development Platform.&lt;br /&gt;
 &lt;br /&gt;
;Solution&lt;br /&gt;
&lt;br /&gt;
Explicitly specify the DOS shell by invoking make like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
..\bin\make SHELL=%ComSpec% testapp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039; the value of %ComSpec% should be &amp;lt;tt&amp;gt;C:\Windows\system32\cmd.exe&amp;lt;/tt&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An alternative is to remove any directories from your PATH that contain an Unix shell executable or otherwise prevent such from being found. (e.g. rename its parent directory).&lt;br /&gt;
&lt;br /&gt;
=== Make Error 3 ===&lt;br /&gt;
;Symptom&lt;br /&gt;
On Linux, when attempting to build the testapp from the command line, the following error is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g++: command not found&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# make testapp&lt;br /&gt;
g++ -c -I”.” -I”../../Runtime” -I”../../SLAP” -I”../../GRS” -I”../out/src” -I”../sample_src” -fPIC -D_DEBUG -O0 -g3 -Wall -o ”../out/i386-Linux-obj/srtestpp.obj” ”../../Runtime/srtestpp.cpp” &lt;br /&gt;
/bin/sh: g++: command not found&lt;br /&gt;
make: *** [../out/i386-Linux-obj/srtestpp.obj] Error 127&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
The C++ compiler, &amp;lt;tt&amp;gt;g++&amp;lt;/tt&amp;gt; can&#039;t be found on your PATH.&lt;br /&gt;
&lt;br /&gt;
Most commonly, this problem is caused by not having a complete installation of [http://en.wikipedia.org/wiki/GNU_Compiler_Collection GNU Compiler Collection].&lt;br /&gt;
 &lt;br /&gt;
;Solution&lt;br /&gt;
Make sure you have a complete GNU Compiler Collection installed.&lt;br /&gt;
&lt;br /&gt;
=== Make Error 4 ===&lt;br /&gt;
;Symptom&lt;br /&gt;
When building the testapp from the command line, you see the following compiler errors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
../out/src/strideIM.cpp(50) : error C3861: &#039;_srTestResultCountReset&#039;: identifier not found&lt;br /&gt;
../out/src/strideIM.cpp(54) : error C3861: &#039;_srTestSendFinalStatus&#039;: identifier not found&lt;br /&gt;
../out/src/strideIM.cpp(56) : error C3861: &#039;_srTestAddToTotal&#039;: identifier not found&lt;br /&gt;
../out/src/strideIM.cpp(56) : error C3861: &#039;_srTestResultGetTotals&#039;: identifier not found&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
You are using an outdated version of the STRIDE build tools.&lt;br /&gt;
&lt;br /&gt;
You can see which version of the tools were used to generate your STRIDE sources by looking at the top of the strideIM.cpp source file. The comment block at the top of the file shows this version.&lt;br /&gt;
&lt;br /&gt;
;Solution&lt;br /&gt;
Remove the old tools and/or change your path so that the current tools are used.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Troubleshooting_Build_Problems&amp;diff=14696</id>
		<title>Troubleshooting Build Problems</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Troubleshooting_Build_Problems&amp;diff=14696"/>
		<updated>2018-04-02T17:36:25Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page describes several common problems encountered when building a STRIDE TestApp using the [[Stride_Sandbox | Off-Target Environment]] and suggested solutions.&lt;br /&gt;
&lt;br /&gt;
== Make Error 1 ==&lt;br /&gt;
;Symptom&lt;br /&gt;
On Windows, when attempting to build the testapp from the command line, you encounter an error indicating that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
‘cl’ is not recognized as an internal or external command,&lt;br /&gt;
operable program or batch file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\STRIDE\SDK\Windows\src&amp;gt;..\bin\make.exe testapp&lt;br /&gt;
cl -c -nologo -W4 -D_UNICODE -DUNICODE -DWIN32 -D_CONSOLE -DUNDER_NT -I”.” -I”../../Runtime” -I”../../SLAP” -I”../../GRS” -I”../o&lt;br /&gt;
ut/src” -I”../sample_src” -GS -Zi -DNDEBUG -MD -O2 -D_LIB -DSTRIDE_STATIC -Fd”../out/desktop-Windows_NT-obj//cl.pdb” -Fo”../out/desktop-Windows_NT-o&lt;br /&gt;
bj/srapi.o” ”../../Runtime/srapi.c” &lt;br /&gt;
‘cl’ is not recognized as an internal or external command,&lt;br /&gt;
operable program or batch file.&lt;br /&gt;
make: *** [../out/desktop-Windows_NT-obj/srapi.o] Error 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
Microsoft Visual Studio 2008 or later is not installed or you are not building from a [http://msdn.microsoft.com/en-us/library/ms235639(v=VS.90).aspx Visual Studio Command Prompt]. &lt;br /&gt;
&lt;br /&gt;
;Soultion&lt;br /&gt;
Make sure you have Microsoft Visual Studio 2008 or later installed.&lt;br /&gt;
&lt;br /&gt;
To ensures that the compiler and linker are on your PATH open a Visual Studio Command prompt: &lt;br /&gt;
* Click the Start button, point to All Programs, Microsoft Visual Studio 20XX, Visual Studio Tools, and then click Visual Studio 20XX Command Prompt.&lt;br /&gt;
&lt;br /&gt;
== Make Error 2 ==&lt;br /&gt;
;Symptom&lt;br /&gt;
On Windows, when attempting to build the testapp from the command line the following errors are observed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syntax error near unexpected token `(&#039;&lt;br /&gt;
syntax error near unexpected token `(&#039;&lt;br /&gt;
syntax error: unexpected end of file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\stride\SDK\Windows\src&amp;gt;..\bin\make testapp&lt;br /&gt;
/bin/sh: -c: line 0: syntax error near unexpected token `(&#039;&lt;br /&gt;
/bin/sh: -c: line 0: `IF EXIST ../out. (IF NOT EXIST ../out/src mkdir &amp;quot;../out/src&amp;quot;) ELSE mkdir &amp;quot;../out&amp;quot; &amp;amp;&amp;amp; mkdir &amp;quot;../out/src&amp;quot;.&#039;&lt;br /&gt;
/bin/sh: -c: line 0: syntax error near unexpected token `(&#039;&lt;br /&gt;
/bin/sh: -c: line 0: `IF EXIST ../out. (IF NOT EXIST ../out/src mkdir &amp;quot;../out/src&amp;quot;) ELSE mkdir &amp;quot;../out&amp;quot; &amp;amp;&amp;amp; mkdir &amp;quot;../out/src&amp;quot;.&#039;&lt;br /&gt;
/bin/sh: -c: line 1: syntax error: unexpected end of file&lt;br /&gt;
make: *** [cleanapp] Error 258&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
This error occurs because gnu make on Windows will search for an Unix shell (&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;csh&amp;lt;/tt&amp;gt;) anywhere in your PATH when executing shell commands and only default to DOS shell (&amp;lt;tt&amp;gt;cmd.exe&amp;lt;/tt&amp;gt;) when no Unix shell is found. The sandbox Makefile uses DOS shell syntax, so when a Unix shell is found on your PATH, this results to errors like above.&lt;br /&gt;
&lt;br /&gt;
Most commonly, this problem is caused by an installation of [http://en.wikipedia.org/wiki/Cygwin Cygwin], though it can also be caused by an installation of the QNX Software Development Platform.&lt;br /&gt;
 &lt;br /&gt;
;Solution&lt;br /&gt;
&lt;br /&gt;
Explicitly specify the DOS shell by invoking make like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
..\bin\make SHELL=%ComSpec% testapp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039; the value of %ComSpec% should be &amp;lt;tt&amp;gt;C:\Windows\system32\cmd.exe&amp;lt;/tt&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An alternative is to remove any directories from your PATH that contain an Unix shell executable or otherwise prevent such from being found. (e.g. rename its parent directory).&lt;br /&gt;
&lt;br /&gt;
== Make Error 3 ==&lt;br /&gt;
;Symptom&lt;br /&gt;
On Linux, when attempting to build the testapp from the command line, the following error is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g++: command not found&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# make testapp&lt;br /&gt;
g++ -c -I”.” -I”../../Runtime” -I”../../SLAP” -I”../../GRS” -I”../out/src” -I”../sample_src” -fPIC -D_DEBUG -O0 -g3 -Wall -o ”../out/i386-Linux-obj/srtestpp.obj” ”../../Runtime/srtestpp.cpp” &lt;br /&gt;
/bin/sh: g++: command not found&lt;br /&gt;
make: *** [../out/i386-Linux-obj/srtestpp.obj] Error 127&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
The C++ compiler, &amp;lt;tt&amp;gt;g++&amp;lt;/tt&amp;gt; can&#039;t be found on your PATH.&lt;br /&gt;
&lt;br /&gt;
Most commonly, this problem is caused by not having a complete installation of [http://en.wikipedia.org/wiki/GNU_Compiler_Collection GNU Compiler Collection].&lt;br /&gt;
 &lt;br /&gt;
;Solution&lt;br /&gt;
Make sure you have a compele GNU Compiler Collection installed.&lt;br /&gt;
&lt;br /&gt;
== Make Error 4 ==&lt;br /&gt;
;Symptom&lt;br /&gt;
When building the testapp from the command line, you see the following compiler errors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
../out/src/strideIM.cpp(50) : error C3861: &#039;_srTestResultCountReset&#039;: identifier not found&lt;br /&gt;
../out/src/strideIM.cpp(54) : error C3861: &#039;_srTestSendFinalStatus&#039;: identifier not found&lt;br /&gt;
../out/src/strideIM.cpp(56) : error C3861: &#039;_srTestAddToTotal&#039;: identifier not found&lt;br /&gt;
../out/src/strideIM.cpp(56) : error C3861: &#039;_srTestResultGetTotals&#039;: identifier not found&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
You are using an outdated version of the STRIDE build tools.&lt;br /&gt;
&lt;br /&gt;
You can see which version of the tools were used to generate your STRIDE sources by looking at the top of the strideIM.cpp source file. The comment block at the top of the file shows this version.&lt;br /&gt;
&lt;br /&gt;
;Solution&lt;br /&gt;
Remove the old tools and/or change your path so that the current tools are used.&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Stride_Sandbox&amp;diff=14695</id>
		<title>Stride Sandbox</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Stride_Sandbox&amp;diff=14695"/>
		<updated>2018-04-02T17:35:41Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Stride&#039;s cross-platform capabilities make it possible to use Stride in a &#039;&#039;&#039;host-only&#039;&#039;&#039; configuration called the &#039;&#039;&#039;Sandbox&#039;&#039;&#039;. This environment facilitates &#039;&#039;self-training&#039;&#039;, &#039;&#039;evaluations&#039;&#039;, and &#039;&#039;trying stuff&#039;&#039;. It frees you from external hardware dependencies and provides for a rapid &#039;&#039;edit-build-test&#039;&#039; cycle.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Sandbox&#039;&#039;&#039; utilizes the framework&#039;s SDK that can be built and executed on the host system. When using the SDK Makefile a simulated target &#039;&#039;native application&#039;&#039; is generated, which we call a &#039;&#039;&#039;Test Application (TestApp)&#039;&#039;&#039;. The Stride Runner application executes on the same host and communicates with the &#039;&#039;&#039;TestApp&#039;&#039;&#039; process over a TCP/IP connection. &lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Sandbox&#039;&#039;&#039; requires the Stride framework package to be setup on your desktop. Refer to the [[Framework Setup | Framework Setup]] article for more information. It also requires that your desktop contains one of the following &#039;&#039;&#039;compilers&#039;&#039;&#039;:&lt;br /&gt;
* For Windows, Microsoft Visual Studio 2008 or later is required. If you don&#039;t already have Visual Studio, the free [http://en.wikipedia.org/wiki/Microsoft_Visual_Studio_Express Visual C++ Express] can be used (download [http://www.microsoft.com/express/download/#webInstall here]). &amp;lt;i&amp;gt;In case you have [http://www.cygwin.com Cygwin] installed, the [http://en.wikipedia.org/wiki/GNU_Compiler_Collection GNU Compiler Collection] could be used as an alternative.&amp;lt;/i&amp;gt;&lt;br /&gt;
* For Linux and FreeBSD, the [http://en.wikipedia.org/wiki/GNU_Compiler_Collection GNU Compiler Collection] (included by default in almost all distros) is required.&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
&lt;br /&gt;
=== SDK Makefile ===&lt;br /&gt;
The SDK Makefile is set up by &#039;&#039;default&#039;&#039; so that all &amp;lt;tt&amp;gt;.c&amp;lt;/tt&amp;gt; &amp;lt;tt&amp;gt;.cpp&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;.h&amp;lt;/tt&amp;gt; files found in the directory &amp;lt;tt&amp;gt;SDK\Windows\sample_src&amp;lt;/tt&amp;gt; (or &amp;lt;tt&amp;gt;SDK/Posix/sample_src&amp;lt;/tt&amp;gt; for Linux/FreeBSD) are included in the compile and link of the &#039;&#039;&#039;testapp&#039;&#039;&#039; target.&lt;br /&gt;
&lt;br /&gt;
Further--as a pre-compilation step--any &amp;lt;tt&amp;gt;.h&amp;lt;/tt&amp;gt; files found in &amp;lt;tt&amp;gt;sample_src&amp;lt;/tt&amp;gt; are submitted to the [[STRIDE Build Tools]]. This will result in &lt;br /&gt;
* the detection of [[Test Pragmas| test pragmas]] used to declare Test Suites in these &amp;lt;tt&amp;gt;.h&amp;lt;/tt&amp;gt; files&lt;br /&gt;
* the generation of a database (&amp;lt;tt&amp;gt;.sidb&amp;lt;/tt&amp;gt;) file required for executing tests&lt;br /&gt;
* the generation of an [[Intercept Module]] required for executing tests&lt;br /&gt;
&lt;br /&gt;
=== Build Steps ===&lt;br /&gt;
To begin, be sure that TestApp is not running then perform the following steps:&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;If you experience any build problem please make sure to read [[Troubleshooting Build Problems]] for possible resolution.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
====Linux/FreeBSD====&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build the test app using GNU make&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -C &amp;quot;$STRIDE_DIR/SDK/Posix/src&amp;quot; testapp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Note that the following artifacts are produced by the build:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;tt&amp;gt;$STRIDE_DIR/SDK/Posix/out/bin/TestApp&amp;lt;/tt&amp;gt;&lt;br /&gt;
: the test application&lt;br /&gt;
;&amp;lt;tt&amp;gt;$STRIDE_DIR/SDK/Posix/out/TestApp.sidb&amp;lt;/tt&amp;gt;&lt;br /&gt;
: the STRIDE interface database file which contains metadata describing the interfaces remoted by the test app (along with other data)&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Windows====&lt;br /&gt;
NOTE: &#039;&#039;In case you have [http://www.cygwin.com Cygwin] and [http://en.wikipedia.org/wiki/GNU_Compiler_Collection GNU Compiler Collection] installed and prefer to use it, please follow the build steps for Linux (see previous section) and ignore the one in here.&#039;&#039;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;If using Microsoft Visual Studio, open a [http://msdn.microsoft.com/en-us/library/ms235639(v=vs.100).aspx Visual Studio Command Prompt] to ensure that the compiler and linker are on your PATH.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Build the test app using the supplied GNU make. (You will get Makefile errors if you use the default make.)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
&amp;quot;%STRIDE_DIR%\SDK\Windows\bin\make&amp;quot; -C &amp;quot;%STRIDE_DIR%\SDK\Windows\src&amp;quot; testapp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Note that the following artifacts are produced by the build:&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;tt&amp;gt;%STRIDE_DIR%\SDK\Windows\out\bin\TestApp.exe&amp;lt;/tt&amp;gt;&lt;br /&gt;
: the test application&lt;br /&gt;
;&amp;lt;tt&amp;gt;%STRIDE_DIR%\SDK\Windows\out\TestApp.sidb&amp;lt;/tt&amp;gt;&lt;br /&gt;
: the STRIDE interface database file which contains metadata describing the interfaces remoted by the test app (along with other data)&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
The test app we just built does not have any user tests in it. At this point it provides a starting point for test that we will subsequently add.&lt;br /&gt;
&lt;br /&gt;
However, a set of diagnostic tests that verify operation of the STRIDE runtime itself are always built into the generated TestApp executable. If desired (we recommend you to do so) you could run them by doing the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Invoke the TestApp. In order to see TestApp&#039;s output, we recommend that you manually run in a console window (or Windows equivalent): &lt;br /&gt;
;Linux/FreeBSD&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
$STRIDE_DIR/SDK/Posix/out/bin/TestApp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
;Windows&lt;br /&gt;
&amp;lt;source lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
%STRIDE_DIR%\SDK\Windows\out\bin\TestApp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
(...or launch from the file explorer)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt; Note TestApp&#039;s output upon startup.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
STRIDE Test Console Application.&lt;br /&gt;
Enter &#039;Ctrl+C&#039; to Quit.&lt;br /&gt;
--------------------------------------------------&lt;br /&gt;
Listening on TCP port 8000&lt;br /&gt;
starting up...&lt;br /&gt;
&amp;quot;_srThread&amp;quot; thread started.&lt;br /&gt;
&amp;quot;stride&amp;quot; thread started.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;From a second console window, invoke &amp;lt;tt&amp;gt;[[STRIDE_Runner|stride]]&amp;lt;/tt&amp;gt; as follows, to verify connectivity with the test app and STRIDE runtime operation:&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
;Linux/FreeBSD&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics --database=&amp;quot;$STRIDE_DIR/SDK/Posix/out/TestApp.sidb&amp;quot; --device=TCP:localhost:8000 --run=&amp;quot;*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
;Windows&lt;br /&gt;
&amp;lt;source lang=&amp;quot;dos&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics --database=&amp;quot;%STRIDE_DIR%\SDK\Windows\out\TestApp.sidb&amp;quot; --device=TCP:localhost:8000 --run=&amp;quot;*&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As the tests run you will see output in both the TestApp (target) and stride (host) console windows.&lt;br /&gt;
&lt;br /&gt;
The host console window output is shown here:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
Connecting to device (TCP:localhost:8000)...&lt;br /&gt;
  runtime version: 5.0.xy &lt;br /&gt;
  test suite &amp;quot;/Link&amp;quot;&lt;br /&gt;
    Loopback ..........&lt;br /&gt;
    Payload Fragmentation&lt;br /&gt;
    Stub-Proxy Deadlock&lt;br /&gt;
    Target Characteristics&lt;br /&gt;
    &amp;gt; 4 passed, 0 failed, 0 in progress, 0 unknown, 0 not in use, 777.77 ms.&lt;br /&gt;
  test suite &amp;quot;/Stat&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 unknown, 0 not in use, 74.98 ms.&lt;br /&gt;
  test suite &amp;quot;/Time&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 unknown, 0 not in use, 2559.23 ms.&lt;br /&gt;
Disconnecting from device...&lt;br /&gt;
  --------------------------------------------------------------------- &lt;br /&gt;
  Summary: 8 passed, 0 failed, 0 in progress, 0 unknown, 0 not in use, 3411.98 ms.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Note the Summary results shown in the host output; all in use tests should pass.&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;To exit TestApp, give the target window focus and enter &amp;lt;tt&amp;gt;Ctrl-C&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Build Problems==&lt;br /&gt;
This page describes several common problems encountered when building a STRIDE TestApp using the Sandbox and suggested solutions.&lt;br /&gt;
&lt;br /&gt;
=== Make Error 1 ===&lt;br /&gt;
;Symptom&lt;br /&gt;
On Windows, when attempting to build the testapp from the command line, you encounter an error indicating that:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
‘cl’ is not recognized as an internal or external command,&lt;br /&gt;
operable program or batch file.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\STRIDE\SDK\Windows\src&amp;gt;..\bin\make.exe testapp&lt;br /&gt;
cl -c -nologo -W4 -D_UNICODE -DUNICODE -DWIN32 -D_CONSOLE -DUNDER_NT -I”.” -I”../../Runtime” -I”../../SLAP” -I”../../GRS” -I”../o&lt;br /&gt;
ut/src” -I”../sample_src” -GS -Zi -DNDEBUG -MD -O2 -D_LIB -DSTRIDE_STATIC -Fd”../out/desktop-Windows_NT-obj//cl.pdb” -Fo”../out/desktop-Windows_NT-o&lt;br /&gt;
bj/srapi.o” ”../../Runtime/srapi.c” &lt;br /&gt;
‘cl’ is not recognized as an internal or external command,&lt;br /&gt;
operable program or batch file.&lt;br /&gt;
make: *** [../out/desktop-Windows_NT-obj/srapi.o] Error 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
Microsoft Visual Studio 2008 or later is not installed or you are not building from a [http://msdn.microsoft.com/en-us/library/ms235639(v=VS.90).aspx Visual Studio Command Prompt]. &lt;br /&gt;
&lt;br /&gt;
;Solution&lt;br /&gt;
Make sure you have Microsoft Visual Studio 2008 or later installed.&lt;br /&gt;
&lt;br /&gt;
To ensures that the compiler and linker are on your PATH open a Visual Studio Command prompt: &lt;br /&gt;
* Click the Start button, point to All Programs, Microsoft Visual Studio 20XX, Visual Studio Tools, and then click Visual Studio 20XX Command Prompt.&lt;br /&gt;
&lt;br /&gt;
=== Make Error 2 ===&lt;br /&gt;
;Symptom&lt;br /&gt;
On Windows, when attempting to build the testapp from the command line the following errors are observed:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
syntax error near unexpected token `(&#039;&lt;br /&gt;
syntax error near unexpected token `(&#039;&lt;br /&gt;
syntax error: unexpected end of file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\stride\SDK\Windows\src&amp;gt;..\bin\make testapp&lt;br /&gt;
/bin/sh: -c: line 0: syntax error near unexpected token `(&#039;&lt;br /&gt;
/bin/sh: -c: line 0: `IF EXIST ../out. (IF NOT EXIST ../out/src mkdir &amp;quot;../out/src&amp;quot;) ELSE mkdir &amp;quot;../out&amp;quot; &amp;amp;&amp;amp; mkdir &amp;quot;../out/src&amp;quot;.&#039;&lt;br /&gt;
/bin/sh: -c: line 0: syntax error near unexpected token `(&#039;&lt;br /&gt;
/bin/sh: -c: line 0: `IF EXIST ../out. (IF NOT EXIST ../out/src mkdir &amp;quot;../out/src&amp;quot;) ELSE mkdir &amp;quot;../out&amp;quot; &amp;amp;&amp;amp; mkdir &amp;quot;../out/src&amp;quot;.&#039;&lt;br /&gt;
/bin/sh: -c: line 1: syntax error: unexpected end of file&lt;br /&gt;
make: *** [cleanapp] Error 258&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
This error occurs because gnu make on Windows will search for an Unix shell (&amp;lt;tt&amp;gt;sh&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;bash&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;csh&amp;lt;/tt&amp;gt;) anywhere in your PATH when executing shell commands and only default to DOS shell (&amp;lt;tt&amp;gt;cmd.exe&amp;lt;/tt&amp;gt;) when no Unix shell is found. The sandbox Makefile uses DOS shell syntax, so when a Unix shell is found on your PATH, this results to errors like above.&lt;br /&gt;
&lt;br /&gt;
Most commonly, this problem is caused by an installation of [http://en.wikipedia.org/wiki/Cygwin Cygwin], though it can also be caused by an installation of the QNX Software Development Platform.&lt;br /&gt;
 &lt;br /&gt;
;Solution&lt;br /&gt;
&lt;br /&gt;
Explicitly specify the DOS shell by invoking make like:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
..\bin\make SHELL=%ComSpec% testapp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Note:&#039;&#039;&#039; the value of %ComSpec% should be &amp;lt;tt&amp;gt;C:\Windows\system32\cmd.exe&amp;lt;/tt&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An alternative is to remove any directories from your PATH that contain an Unix shell executable or otherwise prevent such from being found. (e.g. rename its parent directory).&lt;br /&gt;
&lt;br /&gt;
=== Make Error 3 ===&lt;br /&gt;
;Symptom&lt;br /&gt;
On Linux, when attempting to build the testapp from the command line, the following error is observed:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
g++: command not found&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# make testapp&lt;br /&gt;
g++ -c -I”.” -I”../../Runtime” -I”../../SLAP” -I”../../GRS” -I”../out/src” -I”../sample_src” -fPIC -D_DEBUG -O0 -g3 -Wall -o ”../out/i386-Linux-obj/srtestpp.obj” ”../../Runtime/srtestpp.cpp” &lt;br /&gt;
/bin/sh: g++: command not found&lt;br /&gt;
make: *** [../out/i386-Linux-obj/srtestpp.obj] Error 127&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
The C++ compiler, &amp;lt;tt&amp;gt;g++&amp;lt;/tt&amp;gt; can&#039;t be found on your PATH.&lt;br /&gt;
&lt;br /&gt;
Most commonly, this problem is caused by not having a complete installation of [http://en.wikipedia.org/wiki/GNU_Compiler_Collection GNU Compiler Collection].&lt;br /&gt;
 &lt;br /&gt;
;Solution&lt;br /&gt;
Make sure you have a complete GNU Compiler Collection installed.&lt;br /&gt;
&lt;br /&gt;
=== Make Error 4 ===&lt;br /&gt;
;Symptom&lt;br /&gt;
When building the testapp from the command line, you see the following compiler errors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
../out/src/strideIM.cpp(50) : error C3861: &#039;_srTestResultCountReset&#039;: identifier not found&lt;br /&gt;
../out/src/strideIM.cpp(54) : error C3861: &#039;_srTestSendFinalStatus&#039;: identifier not found&lt;br /&gt;
../out/src/strideIM.cpp(56) : error C3861: &#039;_srTestAddToTotal&#039;: identifier not found&lt;br /&gt;
../out/src/strideIM.cpp(56) : error C3861: &#039;_srTestResultGetTotals&#039;: identifier not found&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Cause&lt;br /&gt;
You are using an outdated version of the STRIDE build tools.&lt;br /&gt;
&lt;br /&gt;
You can see which version of the tools were used to generate your STRIDE sources by looking at the top of the strideIM.cpp source file. The comment block at the top of the file shows this version.&lt;br /&gt;
&lt;br /&gt;
;Solution&lt;br /&gt;
Remove the old tools and/or change your path so that the current tools are used.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=S2scompile&amp;diff=14694</id>
		<title>S2scompile</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=S2scompile&amp;diff=14694"/>
		<updated>2018-04-02T17:30:43Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Search Path */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
== The SCL Compiler Utility ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;s2scompile&#039;&#039;&#039; executable will compile a set of scl files (C/C++ source files with [[SCL Pragmas]]) and produce a &amp;lt;tt&amp;gt;.meta&amp;lt;/tt&amp;gt;  file for each (assuming that compilation is successful).&amp;lt;ref&amp;gt;.meta files are binary-format intermediate files suitable for input to the [[s2sbind]] utility.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All warnings and errors that occur during the compilation are written to the standard output device. The compilation for a particular file is considered successful if no errors occur. Otherwise it is unsuccessful. Unsuccessful compilations do not yield &amp;lt;tt&amp;gt;.meta&amp;lt;/tt&amp;gt; files.&lt;br /&gt;
 &lt;br /&gt;
Options are validated and any incorrect options diagnosed will result in compilation process failure.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
    s2scompile [&amp;lt;i&amp;gt;options&amp;lt;/i&amp;gt;] &amp;lt;i&amp;gt;scl_file1&amp;lt;/i&amp;gt; [&amp;lt;i&amp;gt;scl_fileN&amp;lt;/i&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Options ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;background-color:#ffffcc;&amp;quot;   &lt;br /&gt;
!width=&amp;quot;200pt&amp;quot;|&#039;&#039;&#039;Option&#039;&#039;&#039;&lt;br /&gt;
!width=&amp;quot;500pt&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--version&#039;&#039;&#039;&lt;br /&gt;
| Print version information.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--preprocess&#039;&#039;&#039;&lt;br /&gt;
| Do preprocessing only. Write preprocessed text file to the output.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--dependencies&#039;&#039;&#039;&lt;br /&gt;
| Do preprocessing only. Instead of the normal preprocessing output, generate in the preprocessing output file a list of dependency lines suitable for input to the UNIX make program. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_line_commands&#039;&#039;&#039;&lt;br /&gt;
| Same as &#039;&#039;&#039;–-preprocess&#039;&#039;&#039; except that line number information is removed from the preprocessed output files.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--c++&#039;&#039;&#039;&lt;br /&gt;
| Enable compilation of c++. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--c&#039;&#039;&#039;&lt;br /&gt;
| Enable compilation of C (specifically C89). This is the default.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--include_directory=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;--sys_include=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-I&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Add dir to the end of the list of directories searched for &amp;lt;tt&amp;gt;#include&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_stdinc&#039;&#039;&#039;&lt;br /&gt;
| Do not search the standard system directories for header files. See [[#Search Path|Search Path]] for details.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--define_macro=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;[&#039;&#039;&#039;(&#039;&#039;&#039;&amp;lt;i&amp;gt;parameter-list&amp;lt;/i&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;][&#039;&#039;&#039;=&#039;&#039;&#039;&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;[&#039;&#039;&#039;(&#039;&#039;&#039;&amp;lt;i&amp;gt;parameter-list&amp;lt;/i&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;][&#039;&#039;&#039;=&#039;&#039;&#039;&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;]&lt;br /&gt;
| Define macro &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt; as &amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;. If &amp;quot;=&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;&amp;quot; is omitted, define &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt; as 1.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--undefine_macro=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-U&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Remove predefined macro &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--compatibility=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;string&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Vendor compatibility mode. String can be &amp;quot;microsoft&amp;quot;, &amp;quot;generic&amp;quot; or &amp;quot;gnu&amp;quot;. Default is &amp;quot;generic&amp;quot;. When &amp;quot;Microsoft&amp;quot; is set, the compiler supports a number of extensions to the C or C++ language that are compatible with the Microsoft family of compilers. &amp;quot;gnu&amp;quot; - instructs the compiler to support language extensions compatible with the Gnu family of compilers.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_warning&#039;&#039;&#039;&lt;br /&gt;
| Suppress all warnings in the compilation phase.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--macros&#039;&#039;&#039;&lt;br /&gt;
| Resolve macro (preprocessor define) constant value. Pass this flag only if you intend to do script based testing.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--documentation&#039;&#039;&#039;&lt;br /&gt;
| Extract [http://www.stack.nl/~dimitri/doxygen/docblocks.html doxygen style] source documentation. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--output=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-o&#039;&#039;&#039;&amp;lt;path&amp;gt;&lt;br /&gt;
| Output file or directory. The default is the current directory.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_big_endian&#039;&#039;&#039;&lt;br /&gt;
| Target uses a big endian by representation. The default is little endian.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_plain_char_is_unsigned&#039;&#039;&#039;&lt;br /&gt;
| Target uses unsigned chars to represent “plain” char. The default is signed.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_adaptive_enum&#039;&#039;&#039;&lt;br /&gt;
| Target has adaptive enums. The default is no adaptive enums.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_pack_alignment=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target struct pack alignment. The default is 16. Possible values are 1, 2, 4, 8 or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_char=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target platform size of char. Default is 1. Possible values are 1, 2, 4, 8, or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_char=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target platform alignment of char. Default is 1. Possible values are 1, 2, 4, 8 or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_short=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 2.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_short=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 2.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_int=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_int=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_float=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_float=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_bool_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;char&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_wchar_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;unsigned short&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_size_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;unsigned int&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_ptrdiff_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;int&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--options_file=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;file&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| A file that contains command line options. The format is the same as the command line with the only addition that it could be split on multiple lines. A line starting with &amp;quot;#&amp;quot; or &amp;quot;;&amp;quot; symbol is ignored.&lt;br /&gt;
This option is necessary if the length of the command line string exceeds system limits. Otherwise it is provided only as a convenience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;NOTE:&#039;&#039;&#039; To simplify the integration in existing build environments other standard compiler options (e.g. ARM [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491b/CHDCIEGC.html --via=&amp;lt;file&amp;gt;], GCC [http://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options @&amp;lt;file&amp;gt;], MSVC [http://msdn.microsoft.com/en-us/library/3te4xt0y(v=VS.90).aspx @&amp;lt;file&amp;gt;]) with similar meaning are also recognized and processed the same way.&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The [[Framework_Setup#SDK|standard Platform SDKs]] shipped with the Framework contain a set of options files with predefined target settings for several popular CPUs. Please consider using one of them instead of explicitly passing &amp;lt;tt&amp;gt;--targ_*&amp;lt;/tt&amp;gt; options on the command line.&lt;br /&gt;
&lt;br /&gt;
=== Search Path ===&lt;br /&gt;
&amp;lt;b&amp;gt;s2scompile&amp;lt;/b&amp;gt; by default looks in several different places for headers. It looks for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt; in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$(STRIDE_DIR)/SDK/Runtime&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where $(STRIDE_DIR) is the location where the STRIDE packages are installed following [[Framework_Setup#Directories_and_Files|recommended directory layout]].&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;i&amp;gt;microsoft&amp;lt;/i&amp;gt; mode is specified and $(INCLUDE) enviroment variable is defined (as a &amp;quot;;&amp;quot; separated path list) then all of its entries are looked in for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;i&amp;gt;gnu&amp;lt;/i&amp;gt; mode is specified and $(CPATH) and/or $(C_INCLUDE_PATH) (or $(CPLUS_INCLUDE_PATH) for C++) enviroment variables are defined (as a &amp;quot;:&amp;quot; separated path list) then all of its entries are looked in for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt;. In addition if $(TARGET_CPP) specifies the target GNU &amp;lt;tt&amp;gt;cpp&amp;lt;/tt&amp;gt; (GCC preprocessor or a command line equivalent) it is queried and any given path by it is looked in.&lt;br /&gt;
&lt;br /&gt;
You can add to this list, before any of the default places, by using the &amp;lt;tt&amp;gt;-I&amp;lt;dir&amp;gt;&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
 &lt;br /&gt;
You can prevent s2scompile from searching any of the default directories with the &amp;lt;tt&amp;gt;--no_stdinc&amp;lt;/tt&amp;gt; option. &amp;lt;tt&amp;gt;-I&amp;lt;/tt&amp;gt; options are not ignored as described above when &amp;lt;tt&amp;gt;--no_stdinc&amp;lt;/tt&amp;gt; is in effect. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;s2scompile&amp;lt;/b&amp;gt; looks for headers requested with &amp;lt;tt&amp;gt;#include &amp;quot;file&amp;quot;&amp;lt;/tt&amp;gt; first in the directory containing the current file, then in the same places it would have looked for a header requested with angle brackets.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Refer to the [[Build_Tools#Compiling_multiple_files|Compiling]] section of the Build Tools Examples.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Build_Tools]]&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=S2scompile&amp;diff=14693</id>
		<title>S2scompile</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=S2scompile&amp;diff=14693"/>
		<updated>2018-04-02T17:30:25Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Search Path */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__FORCETOC__&lt;br /&gt;
== The SCL Compiler Utility ==&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;s2scompile&#039;&#039;&#039; executable will compile a set of scl files (C/C++ source files with [[SCL Pragmas]]) and produce a &amp;lt;tt&amp;gt;.meta&amp;lt;/tt&amp;gt;  file for each (assuming that compilation is successful).&amp;lt;ref&amp;gt;.meta files are binary-format intermediate files suitable for input to the [[s2sbind]] utility.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All warnings and errors that occur during the compilation are written to the standard output device. The compilation for a particular file is considered successful if no errors occur. Otherwise it is unsuccessful. Unsuccessful compilations do not yield &amp;lt;tt&amp;gt;.meta&amp;lt;/tt&amp;gt; files.&lt;br /&gt;
 &lt;br /&gt;
Options are validated and any incorrect options diagnosed will result in compilation process failure.&lt;br /&gt;
&lt;br /&gt;
=== Syntax ===&lt;br /&gt;
    s2scompile [&amp;lt;i&amp;gt;options&amp;lt;/i&amp;gt;] &amp;lt;i&amp;gt;scl_file1&amp;lt;/i&amp;gt; [&amp;lt;i&amp;gt;scl_fileN&amp;lt;/i&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
=== Options ===&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;background-color:#ffffcc;&amp;quot;   &lt;br /&gt;
!width=&amp;quot;200pt&amp;quot;|&#039;&#039;&#039;Option&#039;&#039;&#039;&lt;br /&gt;
!width=&amp;quot;500pt&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--version&#039;&#039;&#039;&lt;br /&gt;
| Print version information.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--preprocess&#039;&#039;&#039;&lt;br /&gt;
| Do preprocessing only. Write preprocessed text file to the output.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--dependencies&#039;&#039;&#039;&lt;br /&gt;
| Do preprocessing only. Instead of the normal preprocessing output, generate in the preprocessing output file a list of dependency lines suitable for input to the UNIX make program. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_line_commands&#039;&#039;&#039;&lt;br /&gt;
| Same as &#039;&#039;&#039;–-preprocess&#039;&#039;&#039; except that line number information is removed from the preprocessed output files.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--c++&#039;&#039;&#039;&lt;br /&gt;
| Enable compilation of c++. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--c&#039;&#039;&#039;&lt;br /&gt;
| Enable compilation of C (specifically C89). This is the default.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--include_directory=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;--sys_include=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-I&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;dir&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Add dir to the end of the list of directories searched for &amp;lt;tt&amp;gt;#include&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_stdinc&#039;&#039;&#039;&lt;br /&gt;
| Do not search the standard system directories for header files. See [[#Search Path|Search Path]] for details.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--define_macro=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;[&#039;&#039;&#039;(&#039;&#039;&#039;&amp;lt;i&amp;gt;parameter-list&amp;lt;/i&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;][&#039;&#039;&#039;=&#039;&#039;&#039;&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;]&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-D&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;[&#039;&#039;&#039;(&#039;&#039;&#039;&amp;lt;i&amp;gt;parameter-list&amp;lt;/i&amp;gt;&#039;&#039;&#039;)&#039;&#039;&#039;][&#039;&#039;&#039;=&#039;&#039;&#039;&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;]&lt;br /&gt;
| Define macro &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt; as &amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;. If &amp;quot;=&amp;lt;i&amp;gt;value&amp;lt;/i&amp;gt;&amp;quot; is omitted, define &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt; as 1.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--undefine_macro=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-U&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Remove predefined macro &amp;lt;i&amp;gt;&amp;lt;name&amp;gt;&amp;lt;/i&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--compatibility=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;string&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Vendor compatibility mode. String can be &amp;quot;microsoft&amp;quot;, &amp;quot;generic&amp;quot; or &amp;quot;gnu&amp;quot;. Default is &amp;quot;generic&amp;quot;. When &amp;quot;Microsoft&amp;quot; is set, the compiler supports a number of extensions to the C or C++ language that are compatible with the Microsoft family of compilers. &amp;quot;gnu&amp;quot; - instructs the compiler to support language extensions compatible with the Gnu family of compilers.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--no_warning&#039;&#039;&#039;&lt;br /&gt;
| Suppress all warnings in the compilation phase.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--macros&#039;&#039;&#039;&lt;br /&gt;
| Resolve macro (preprocessor define) constant value. Pass this flag only if you intend to do script based testing.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--documentation&#039;&#039;&#039;&lt;br /&gt;
| Extract [http://www.stack.nl/~dimitri/doxygen/docblocks.html doxygen style] source documentation. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--output=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;path&amp;gt;&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;-o&#039;&#039;&#039;&amp;lt;path&amp;gt;&lt;br /&gt;
| Output file or directory. The default is the current directory.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_big_endian&#039;&#039;&#039;&lt;br /&gt;
| Target uses a big endian by representation. The default is little endian.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_plain_char_is_unsigned&#039;&#039;&#039;&lt;br /&gt;
| Target uses unsigned chars to represent “plain” char. The default is signed.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_adaptive_enum&#039;&#039;&#039;&lt;br /&gt;
| Target has adaptive enums. The default is no adaptive enums.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_pack_alignment=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target struct pack alignment. The default is 16. Possible values are 1, 2, 4, 8 or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_char=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target platform size of char. Default is 1. Possible values are 1, 2, 4, 8, or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_char=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Target platform alignment of char. Default is 1. Possible values are 1, 2, 4, 8 or 16.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_short=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 2.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_short=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 2.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_int=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_int=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long_long=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_float=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_float=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 4.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_sizeof_long_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;size&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_alignof_long_double=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;align&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is 8.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_bool_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;char&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_wchar_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;unsigned short&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_size_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;unsigned int&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--targ_ptrdiff_t_int_kind=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;typename&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| Default is &amp;quot;int&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--options_file=&#039;&#039;&#039;&amp;lt;i&amp;gt;&amp;lt;file&amp;gt;&amp;lt;/i&amp;gt;&lt;br /&gt;
| A file that contains command line options. The format is the same as the command line with the only addition that it could be split on multiple lines. A line starting with &amp;quot;#&amp;quot; or &amp;quot;;&amp;quot; symbol is ignored.&lt;br /&gt;
This option is necessary if the length of the command line string exceeds system limits. Otherwise it is provided only as a convenience.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;NOTE:&#039;&#039;&#039; To simplify the integration in existing build environments other standard compiler options (e.g. ARM [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491b/CHDCIEGC.html --via=&amp;lt;file&amp;gt;], GCC [http://gcc.gnu.org/onlinedocs/gcc/Overall-Options.html#Overall-Options @&amp;lt;file&amp;gt;], MSVC [http://msdn.microsoft.com/en-us/library/3te4xt0y(v=VS.90).aspx @&amp;lt;file&amp;gt;]) with similar meaning are also recognized and processed the same way.&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: The [[Framework_Setup#SDK|standard Platform SDKs]] shipped with the Framework contain a set of options files with predefined target settings for several popular CPUs. Please consider using one of them instead of explicitly passing &amp;lt;tt&amp;gt;--targ_*&amp;lt;/tt&amp;gt; options on the command line.&lt;br /&gt;
&lt;br /&gt;
=== Search Path ===&lt;br /&gt;
&amp;lt;b&amp;gt;s2scompile&amp;lt;/b&amp;gt; by default looks in several different places for headers. It looks for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt; in:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$(STRIDE_DIR)/SDK/Runtime&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Where $(STRIDE_DIR) is the location where the STRIDE packages are installed following [[Framework_Setup#Directories_and_Files|recomended directory layout]].&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;i&amp;gt;microsoft&amp;lt;/i&amp;gt; mode is specified and $(INCLUDE) enviroment variable is defined (as a &amp;quot;;&amp;quot; separated path list) then all of its entries are looked in for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
When &amp;lt;i&amp;gt;gnu&amp;lt;/i&amp;gt; mode is specified and $(CPATH) and/or $(C_INCLUDE_PATH) (or $(CPLUS_INCLUDE_PATH) for C++) enviroment variables are defined (as a &amp;quot;:&amp;quot; separated path list) then all of its entries are looked in for headers requested with &amp;lt;tt&amp;gt;#include &amp;lt;file&amp;gt;&amp;lt;/tt&amp;gt;. In addition if $(TARGET_CPP) specifies the target GNU &amp;lt;tt&amp;gt;cpp&amp;lt;/tt&amp;gt; (GCC preprocessor or a command line equivalent) it is queried and any given path by it is looked in.&lt;br /&gt;
&lt;br /&gt;
You can add to this list, before any of the default places, by using the &amp;lt;tt&amp;gt;-I&amp;lt;dir&amp;gt;&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
 &lt;br /&gt;
You can prevent s2scompile from searching any of the default directories with the &amp;lt;tt&amp;gt;--no_stdinc&amp;lt;/tt&amp;gt; option. &amp;lt;tt&amp;gt;-I&amp;lt;/tt&amp;gt; options are not ignored as described above when &amp;lt;tt&amp;gt;--no_stdinc&amp;lt;/tt&amp;gt; is in effect. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;s2scompile&amp;lt;/b&amp;gt; looks for headers requested with &amp;lt;tt&amp;gt;#include &amp;quot;file&amp;quot;&amp;lt;/tt&amp;gt; first in the directory containing the current file, then in the same places it would have looked for a header requested with angle brackets.&lt;br /&gt;
&lt;br /&gt;
=== Examples ===&lt;br /&gt;
Refer to the [[Build_Tools#Compiling_multiple_files|Compiling]] section of the Build Tools Examples.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
[[Category:Build_Tools]]&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14692</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14692"/>
		<updated>2018-04-02T17:23:39Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Perl Installation (Optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86_64)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-x86_64-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;==&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only the versions 5.8.9, 5.10.x, 5.12.x, 5.14.x, 5.16.x, 5.18.x, 5.20.x and 5.22.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use the standard &#039;&#039;&#039;32-bit&#039;&#039;&#039; Perl distributions from [http://www.activestate.com/activeperl/downloads ActiveState].&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
You can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]. &lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=STRIDE_Runner&amp;diff=14691</id>
		<title>STRIDE Runner</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=STRIDE_Runner&amp;diff=14691"/>
		<updated>2018-04-02T17:20:55Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
The &#039;&#039;&#039;stride&#039;&#039;&#039; executable (a.k.a. Stride Runner) runs script or native target-based tests from a desktop (Windows, Linux or FreeBSD) host computer and optionally uploads results to [http://www.testspace.com Testspace]. &lt;br /&gt;
&lt;br /&gt;
 stride [&amp;lt;i&amp;gt;options&amp;lt;/i&amp;gt;] [&amp;lt;i&amp;gt;TU...&amp;lt;/i&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
Each command line option that accepts an argument should be entered with a space between the option and its corresponding argument; i.e.&lt;br /&gt;
 stride -o argument --option1 argument1&lt;br /&gt;
&lt;br /&gt;
= Input =&lt;br /&gt;
In order to run tests, you must provide the following information to Runner:&lt;br /&gt;
&lt;br /&gt;
;database file&lt;br /&gt;
: This is the .sidb file that is created by the [[Build Tools]] during the target build process. This file contains meta-information used to run tests.&lt;br /&gt;
&lt;br /&gt;
;device parameters&lt;br /&gt;
: This tells how to connect to the target.&lt;br /&gt;
&lt;br /&gt;
;tests to run&lt;br /&gt;
: A set of Test Units and or Test Scripts. &lt;br /&gt;
&lt;br /&gt;
== Running ==&lt;br /&gt;
By default, no tests are run. You need to explicitly list them using the &amp;lt;tt&amp;gt;--run&amp;lt;/tt&amp;gt; option.&lt;br /&gt;
&lt;br /&gt;
=== Order ===&lt;br /&gt;
When explicitly specified, Tests are run in the order in which they are given on the command line.&lt;br /&gt;
&lt;br /&gt;
It is possible to run all Test Units by explicitly specifying a wildcard (*). In that case they are run in alphabetical order.&lt;br /&gt;
&lt;br /&gt;
=== Rules ===&lt;br /&gt;
&lt;br /&gt;
* Test Units are specified by name or wildcard&lt;br /&gt;
* Scripts are specified by relative or absolute file name &lt;br /&gt;
* Tests (scripts or test units) are grouped together within curly braces, i.e. &amp;quot;{&amp;quot; and &amp;quot;}&amp;quot;&lt;br /&gt;
* When specifying more than one Test in a group, each Test instance must be delimited by a semicolon.&lt;br /&gt;
* When a Test accepts parameters they are passed following the Test name in parentheses comma separated, i.e. &amp;quot;&amp;lt;tt&amp;gt;myTest(param1, param2)&amp;lt;/tt&amp;gt;&amp;quot;&lt;br /&gt;
* The output of each Test group is placed within a hierarchy of named suites. (The root suite does not have a name.)&lt;br /&gt;
* The suite into which a Test group is placed is specified immediately before the group, e.g. &#039;&#039;&amp;lt;tt&amp;gt;suitepath&amp;lt;/tt&amp;gt;&#039;&#039;&amp;lt;tt&amp;gt;{&amp;lt;/tt&amp;gt;&#039;&#039;&amp;lt;tt&amp;gt;testunitgroup&amp;lt;/tt&amp;gt;&#039;&#039;&amp;lt;tt&amp;gt;}&amp;lt;/tt&amp;gt;&lt;br /&gt;
* Hierarchical suite paths are delimited by &amp;quot;/&amp;quot; (forward slash) and are always specified starting from the root.&lt;br /&gt;
* If the same Test is specified to be run more than once, and one or more results are to be written to the same suite, the each conflicting Test name is appended with an incrementing count in the form of &amp;quot;(n)&amp;quot;. For example: Results from three runs of TestUnit &amp;quot;myTest&amp;quot; are all written to the root suite. The Tests will be reported with the names &amp;quot;myTest&amp;quot; &amp;quot;myTest(1)&amp;quot; and &amp;quot;myTest(2)&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Wildcard Matching ====&lt;br /&gt;
The following wildcard characters are recognized in Test Unit specifications:&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;&#039;&#039;&#039; (asterisk) matches all Test Units&lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;code&amp;gt;-&amp;lt;/code&amp;gt;&#039;&#039;&#039; (hyphen) matches all remaining Test Units (useful when putting Test Units into suites) &lt;br /&gt;
&lt;br /&gt;
==== Examples ====&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;-r &amp;quot;/{*}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Run all Test Units and put results into the root-level suite.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;-r &amp;quot;/Suite{*}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Run all tests and put results into a suite named &amp;quot;Suite&amp;quot; that is a child of the root suite.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;-r &amp;quot;/{Test1;Test2;Test3}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Run the Tests named &amp;quot;Test1&amp;quot;, &amp;quot;Test2&amp;quot;, and &amp;quot;Test3&amp;quot; in the designated order; put results into the root suite.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;-r &amp;quot;/{Test1;Test2;Test3}&amp;quot; -r &amp;quot;/SecondPass{Test1}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Run the Tests named &amp;quot;Test1&amp;quot;, &amp;quot;Test2&amp;quot;, and &amp;quot;Test3&amp;quot; in the designated order; put results into the root suite. Then run the Test Unit named &amp;quot;Test1&amp;quot; again and put the results into a suite named &amp;quot;SecondPass&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;-r &amp;quot;/{Test1;Test2;Test3}&amp;quot; -r &amp;quot;/Remaining{-}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Run the Test Units named &amp;quot;Test1&amp;quot;, &amp;quot;Test2&amp;quot;, and &amp;quot;Test3&amp;quot; in the designated order; put results into the root suite. Then run all remaining Test Units and put the results into a suite named &amp;quot;Remaining&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;-r &amp;quot;/Suite1/Suite2{TestA; TestB}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Run the Tests named &amp;quot;TestA&amp;quot; and &amp;quot;TestB&amp;quot;, and put the results into a suite named &amp;quot;Suite2&amp;quot; that is a child of a suite named &amp;quot;Suite1&amp;quot; that is a child of the root. Note that we must enclose the specification in quotes since the specification contains a space.&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;-r &amp;quot;/{TestA(29); TestB(5.67, \&amp;quot;some text\&amp;quot;)}&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: Run the Tests named &amp;quot;TestA&amp;quot; with parameter 29 and &amp;quot;TestB&amp;quot; with parameters 5.67 and &amp;quot;some text&amp;quot;, and put the results into the root suite. Note that we must enclose the specification in quotes since the specification contains spaces and embedded quotes (which needs to be escaped using backslash).&lt;br /&gt;
&lt;br /&gt;
;&amp;lt;code&amp;gt;-r &amp;quot;TestX; TestY; TestZ&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
: This is a special convenience syntax. If the suite and grouping braces are omitted, the app runs the the named Test Units and puts their results put into the root suite.&lt;br /&gt;
&lt;br /&gt;
= Output =&lt;br /&gt;
Upon test completion, test output is always written as follows:&lt;br /&gt;
&lt;br /&gt;
;console output&lt;br /&gt;
: A quick summary of results is written to standard output. Test counts are shown for the categories of &#039;&#039;&#039;passed&#039;&#039;&#039;, &#039;&#039;&#039;failed&#039;&#039;&#039;, &#039;&#039;&#039;in progress&#039;&#039;&#039;, and &#039;&#039;&#039;not in use&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;local xml file&lt;br /&gt;
: Detailed results are written to a local xml file. By default, this file is written in the current directory, named as &#039;&#039;&#039;&amp;quot;testresult.xml&amp;quot;&#039;&#039;&#039;. In addition a &#039;&#039;&#039;&amp;quot;testresult.html&amp;quot;&#039;&#039;&#039; is generated that could be open in a web browser of your choice. &lt;br /&gt;
&lt;br /&gt;
;Testspace&lt;br /&gt;
: Optionally, you may also publish the results to your [http://www.testspace.com Testspace] upon test completion. Results are uploaded using your Testspace URL and login credentials. You must specify the a destination Testspace project and space names.&lt;br /&gt;
&lt;br /&gt;
= Options =&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;10&amp;quot; style=&amp;quot;align:left;background-color:#ffffcc;&amp;quot;   &lt;br /&gt;
!width=&amp;quot;200pt&amp;quot;|&#039;&#039;&#039;Option&#039;&#039;&#039;&lt;br /&gt;
!width=&amp;quot;500pt&amp;quot;|&#039;&#039;&#039;Description&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--database&#039;&#039;&#039; [ -d ] &#039;&#039;arg&#039;&#039;&lt;br /&gt;
| Specifies the name of an existing STRIDE database (.sidb) file that will be used for test execution.&lt;br /&gt;
&lt;br /&gt;
This can be a relative or absolute path. If the path contains one or more spaces, it must be enclosed in quotes. Under Windows, both DOS and [http://en.wikipedia.org/wiki/Path_(computing)#Uniform_Naming_Convention UNC names] are accepted.&lt;br /&gt;
&lt;br /&gt;
As a path delimiter you may use either the forward slash or backslash character. (Forward slashes are typically preferred due to the standard use of the backslash as an escape character.)&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--device&#039;&#039;&#039; &#039;&#039;arg&#039;&#039;&lt;br /&gt;
| Specifies the parameters to be used to connect to the target device (i.e. TCP:&#039;&#039;host&#039;&#039;:&#039;&#039;port&#039;&#039; or COM&#039;&#039;port&#039;&#039;:&#039;&#039;rate&#039;&#039;:&#039;&#039;mode&#039;&#039;). For example: &lt;br /&gt;
* &amp;lt;code&amp;gt;TCP:localhost:8000&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;COM7:28800:8N1&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;/dev/ttyS2:57600:8N1&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--timeout&#039;&#039;&#039; &#039;&#039;arg&#039;&#039; (=0)&lt;br /&gt;
| Specifies a watchdog timeout (in seconds) per single test function or test method. &lt;br /&gt;
Default value is 0. (0 = infinite timeout)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--run&#039;&#039;&#039; [ -r ] &#039;&#039;arg&#039;&#039;&lt;br /&gt;
| Specifies a list of Test Units or Scripts to execute and their order of execution with optional report grouping by suite. You may specify this option many times on the command line to include multiple groupings in a single test. A named Test Suite may be specified more than once to run it multiple times. See [[#Input|Input]] section above for more details.&lt;br /&gt;
Any nameless positional option is treated as this option.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--trace&#039;&#039;&#039; [ -t ] &#039;&#039;arg&#039;&#039; (=txt)&lt;br /&gt;
| Specifies if and how to trace on target instrumentation (functions, messages and test points/logs). &amp;lt;br/&amp;gt;&lt;br /&gt;
The following types of tracing formats are supported:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;txt&amp;quot;&amp;lt;/code&amp;gt; - single-entry-per-line plain text file&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;yml&amp;quot;&amp;lt;/code&amp;gt; - [http://en.wikipedia.org/wiki/Yaml YAML] formated file&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;-&amp;quot;&amp;lt;/code&amp;gt; - interactive single-entry-per-line plain text&lt;br /&gt;
With the exception of the interactive type all others are attached as an annotation to the output file.&amp;lt;br/&amp;gt;&lt;br /&gt;
Default value is &amp;quot;txt&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--trace_timeout&#039;&#039;&#039; &#039;&#039;arg&#039;&#039;&lt;br /&gt;
| Specifies a trace timeout (in seconds).&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--upload&#039;&#039;&#039; [ -u ] &#039;&#039;arg&#039;&#039; (=start)&lt;br /&gt;
| Specifies if and how to upload the results to Testspace. Arg specifies type of upload; &amp;lt;br/&amp;gt;&lt;br /&gt;
The following types of uploads are supported:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;full&amp;quot;&amp;lt;/code&amp;gt; - This causes a new result set to be created and marked complete. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;start&amp;quot;&amp;lt;/code&amp;gt; - This is used to create a new result set and mark it incomplete. An upload of this type should be followed by zero or more uploads that add results and one final upload that finishes the result set.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;add&amp;quot;&amp;lt;/code&amp;gt; - This is used to add more data to an existing incomplete result set. The result set will still be marked incomplete after this upload type.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;finish&amp;quot;&amp;lt;/code&amp;gt; - This is used to add more data to an existing incomplete result set and mark it complete. This is the last step in creating a result set from multiple executions.&lt;br /&gt;
Default value is &amp;quot;start&amp;quot;. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--testspace&#039;&#039;&#039; &#039;&#039;arg&#039;&#039;&lt;br /&gt;
| Specifies the Testspace URL to which the results will be uploaded, expressed in the following form: &amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;user:pwd@&amp;lt;domain&amp;gt;.testspace.com/&amp;lt;project&amp;gt;/&amp;lt;space&amp;gt;&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
Where &#039;domain&#039; is your organization&#039;s subdomain, and &#039;project&#039; and &#039;space&#039; are the names of related project and space. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--result&#039;&#039;&#039; &#039;&#039;arg&#039;&#039;&lt;br /&gt;
| Name of the output XML result file and optionally, when uploading, the result set name along with folder path (default &amp;quot;root&amp;quot;).&lt;br /&gt;
The following ways to specify are supported:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;myfile.xml&amp;quot;&amp;lt;/code&amp;gt; - set both, output XML result file and result set name, to be the same.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;myname|&amp;quot;&amp;lt;/code&amp;gt; - set the result set name only, use the default &amp;quot;testresult.xml&amp;quot; as output XML result file.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;|myfile.xml&amp;quot;&amp;lt;/code&amp;gt; - set the output XML result file only, let Testspace to choose the result set name.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;myname|myfile.xml&amp;quot;&amp;lt;/code&amp;gt; - set both, result set name and output XML result file, to be different names.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;myname/path/to/folder|myfile.xml&amp;quot;&amp;lt;/code&amp;gt; - set both, result set name and output XML result file, to be different and upload under an explicit folder path.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;/path/to/folder|myfile.xml&amp;quot;&amp;lt;/code&amp;gt; - set the output XML result file, let Testspace to choose the result set name but upload under an explicit folder path.&lt;br /&gt;
Default value is &amp;quot;testresult.xml&amp;quot;. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--list&#039;&#039;&#039;&lt;br /&gt;
| Lists all Test Units and intercepted Functions in the specified Stride database to standard out.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--diagnostics&#039;&#039;&#039;&lt;br /&gt;
| Performs a set of built-in diagnostic tests on the target. See [[Build_Integration#Running_Diagnostics|Running Diagnostics]] for details.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--log_level&#039;&#039;&#039; &#039;&#039;arg&#039;&#039; (=warn)&lt;br /&gt;
| Controls the target source [[Test Log |Test Logs]] level. &amp;lt;br/&amp;gt;&lt;br /&gt;
The following levels are supported:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;all&amp;quot;&amp;lt;/code&amp;gt; - enables all logging&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;info&amp;quot;&amp;lt;/code&amp;gt; - enables only INFO and higher&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;warn&amp;quot;&amp;lt;/code&amp;gt; - enables only WARN and higher&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;err&amp;quot;&amp;lt;/code&amp;gt; - enables only ERROR and higher&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;off&amp;quot;&amp;lt;/code&amp;gt; - disables all logging&lt;br /&gt;
Default value is &amp;quot;warn&amp;quot;. &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--options_file&#039;&#039;&#039; &#039;&#039;arg&#039;&#039;&lt;br /&gt;
| Specifies a file from which the program reads command line options. The format is the same as the command line except that options may be split across multiple lines. Lines in an options file that begin with the character &#039;#&#039; are ignored.&lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;--version&#039;&#039;&#039;&lt;br /&gt;
| Prints version information to the console.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;--dry&#039;&#039;&#039;&lt;br /&gt;
| Dry run, just validate the input without device connection or test execution.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using a Proxy ===&lt;br /&gt;
If you access the Internet via an HTTP proxy, you must set the environment variables &amp;lt;tt&amp;gt;HTTP_PROXY&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;HTTPS_PROXY&amp;lt;/tt&amp;gt; to specify the name and port of the proxy server.&lt;br /&gt;
&lt;br /&gt;
Symptoms of needing to specify a proxy is the following errors:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Unable to proceed. Invalid testspace address or credentials. Couldn&#039;t access the specified company. &lt;br /&gt;
Failed performing request: [7] Couldn&#039;t connect to server&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Unable to proceed. Failed performing request: [6] Couldn’t resolve host name&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Define the environment variables in format &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;host:port&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039;  where &#039;&#039;host&#039;&#039;:&#039;&#039;port&#039;&#039; corresponding to your proxy server. For example, on Windows:&lt;br /&gt;
 &amp;gt; set HTTP_PROXY=myproxy:8765&lt;br /&gt;
 &amp;gt; set HTTPS_PROXY=myproxy:8765&lt;br /&gt;
would instruct the stride runner to use the proxy named &amp;lt;tt&amp;gt;myproxy&amp;lt;/tt&amp;gt; on port &amp;lt;tt&amp;gt;8765&amp;lt;/tt&amp;gt; to communicate via HTTP and HTTPS protocols.&lt;br /&gt;
&lt;br /&gt;
If your proxy requires authentication use the format &#039;&#039;&#039;&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;username:password@host:port&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&#039;&#039;&#039; where &#039;&#039;username&#039;&#039; and &#039;&#039;password&#039;&#039; are your credentials.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14690</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14690"/>
		<updated>2018-04-02T17:19:43Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Testspace integration ==&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process.&lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02h ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02i ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02j ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02l ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02m ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02n ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02o ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] integration with [http://help.testspace.com Testspace] has been improved.&lt;br /&gt;
* Added support for Perl version 5.22. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process &amp;quot;noexcept&amp;quot; and &amp;quot;constexpr&amp;quot; C++11 specifiers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14689</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14689"/>
		<updated>2018-04-02T16:45:08Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Testspace integration ==&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[STRIDE Runtime]] default configuration has been updated to &amp;quot;multi-process&amp;quot; disabled.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runtime]] may crash in MS ARM64 apps.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treats &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently in Visual Studio 2012+. &lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 srride.c&lt;br /&gt;
 stride.props&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] fails to compile Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[STRIDE Runner]] may crash on Linux.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14688</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14688"/>
		<updated>2018-04-02T16:28:48Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Testspace integration ==&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] Testspace &amp;quot;suite.*&amp;quot; system variables is deprecated in favor of the new &amp;quot;script.*&amp;quot;.&lt;br /&gt;
* [[STRIDE Runtime]] default configuration has been updated to &amp;quot;multi-process&amp;quot; disabled.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] cross platform handling has been improved.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runtime]] may crash in MS ARM64 apps.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] incorrectly calculates the size/alignment of synthesized structs&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treats &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently in Visual Studio 2012+. &lt;br /&gt;
* [[STRIDE Runner]] fails to handle schema/result output in &amp;quot;read-only&amp;quot; directory.&lt;br /&gt;
* [[STRIDE Runner]] may handle incorrectly negative integers.&lt;br /&gt;
* [[STRIDE Runner]] is missing message response trace payload.&lt;br /&gt;
* [[STRIDE Runner]] crashes on multi-command command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 srride.c&lt;br /&gt;
 stride.props&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Running_Tests&amp;diff=14687</id>
		<title>Running Tests</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Running_Tests&amp;diff=14687"/>
		<updated>2017-10-17T19:20:13Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
Tests are executed using the [[STRIDE Runner | Stride Runner]] controlled by a host computer that is physically connected to the target via a configurable communication channel (TCP/IP or serial port). The application software is required to be running, including the [[STRIDE Runtime | Stride Runtime]], enabling a &#039;&#039;connection&#039;&#039; between the &#039;&#039;Runner&#039;&#039; and &#039;&#039;Runtime&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Block diagram&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Running_Tests.jpg|400px|Connection Block Diagram]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Invoking the STRIDE Runner (aka &amp;lt;tt&amp;gt;stride&amp;lt;/tt&amp;gt;) from a console&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  stride --database=&amp;quot;path/to/YourTestApp.sidb&amp;quot; --device=TCP:localhost:8000 --run=&amp;quot;*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Option files can be helpful (i.e. my.opt)&lt;br /&gt;
&lt;br /&gt;
  --database &amp;quot;path/to/YourTestApp.sidb&amp;quot;&lt;br /&gt;
  --device TCP:localhost:8000&lt;br /&gt;
&lt;br /&gt;
  stride --options_file my.opt --run &amp;quot;*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Reviewing your Results&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Runner_Test_Report.jpg |Example Report]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Input ==&lt;br /&gt;
In order to run tests, you must provide the following information to stride.exe:&lt;br /&gt;
&lt;br /&gt;
;database file&lt;br /&gt;
: This is the .sidb file that is created by the &#039;&#039;Stride Compiler&#039;&#039; during the target build process. This file contains meta-information used to run tests.&lt;br /&gt;
&lt;br /&gt;
;device parameters&lt;br /&gt;
: This defines how to connect to the target.&lt;br /&gt;
&lt;br /&gt;
;tests to run&lt;br /&gt;
: A set of [[Test Unit| Test Units]] compiled in the database. You may also optionally specify named hierarchical suites in which to put the results of the tests you designate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Output ==&lt;br /&gt;
Upon test completion, test output is always written as follows:&lt;br /&gt;
&lt;br /&gt;
;console output&lt;br /&gt;
: A quick summary of results is written to standard output. Test counts are shown for the categories of &#039;&#039;&#039;passed&#039;&#039;&#039;, &#039;&#039;&#039;failed&#039;&#039;&#039;, &#039;&#039;&#039;in progress&#039;&#039;&#039;, and &#039;&#039;&#039;not in use&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
;local xml file&lt;br /&gt;
: Detailed results are written to a local xml file. By default, this file is written to the directory where the input Stride database file is located and given the same name as the database file with an extension of &amp;quot;.xml&amp;quot;. If you open this file in a web browser, an xsl transform is automatically downloaded and applied before rendering.&lt;br /&gt;
&lt;br /&gt;
Optionally, you may also publish the results to [http://www.testspace.com Test Space] upon test completion.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14686</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14686"/>
		<updated>2016-12-13T02:01:01Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Testspace integration ==&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14685</id>
		<title>Release Notes</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Release_Notes&amp;diff=14685"/>
		<updated>2016-12-13T02:00:24Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Minor and Patch releases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
This page documents the changes in STRIDE releases.&lt;br /&gt;
&lt;br /&gt;
= 5.0.02x =&lt;br /&gt;
The code name for this release is &#039;&#039;South Side&#039;&#039;. Released on Apr 21, 2015. &lt;br /&gt;
&lt;br /&gt;
== Testspace integration ==&lt;br /&gt;
Stride Runner integration with [http://help.testspace.com Testspace] has been highly improved.&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] doesn&#039;t support Microsoft preprocessor specific &amp;quot;token-pasting&amp;quot;.&lt;br /&gt;
* [[STRIDE Runner]] fails on execute test modules with Perl 5.18. &lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Added support for Perl version 5.20. &lt;br /&gt;
* Support for Perl versions 5.14 and older is not provided by default but is available on demand. &lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.02x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.02&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02a ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] local generated result file incorrectly renders links in non-IE browsers. &lt;br /&gt;
* [[STRIDE Runner]] incorrectly merges result files with BOM.&lt;br /&gt;
* [[STRIDE Runner]] may error out in environments with multi-line variable values.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on results upload in case the Testspace server returns an error.&lt;br /&gt;
* [[STRIDE Runner]] is not able to access Testspace Project/Space with white space in the name.&lt;br /&gt;
* [[STRIDE Runner]] may silently fail or return incorrect error code.&lt;br /&gt;
* [[STRIDE Runner]] times out on target connection when using a custom transport.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02b ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now reports the implicit &amp;quot;process&amp;quot; test case of a &amp;quot;runnable&amp;quot; suite as NA if no XML result is reported&lt;br /&gt;
* [[STRIDE Runner]] console output is much cleaner, need to pass &amp;lt;code&amp;gt;--verbose&amp;lt;/code&amp;gt; option to get the old detailed output&lt;br /&gt;
* [[STRIDE Runner]] now can consume directly Bullseye, Cobertura, and Clover xml reports. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable process enums with &amp;quot;bool&amp;quot; underlying type.&lt;br /&gt;
* [[STRIDE Runner]] may incorrectly handle complex command lines in &amp;quot;runnable&amp;quot; suites.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02c ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] may not stop on Ctrl-C. &lt;br /&gt;
* [[STRIDE Runner]] may not properly parse 3rd party XML results.&lt;br /&gt;
* [[STRIDE Runner]] incorrectly sets the mime type of individually uploaded file annotations.&lt;br /&gt;
* [[STRIDE Runner]] may not upload results to Testspace in case of HTTP redirect.&lt;br /&gt;
* [[STRIDE Runner]] may crash on test cases with very long names.&lt;br /&gt;
* [[STRIDE Runner]] may crash on &amp;quot;runnable&amp;quot; suites referencing command line with single digit argument.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02d ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* The Linux version of the [[Framework_Setup#Linux.2FFreeBSD|Framework]] now comes with native 64-bit binaries&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Klocwork errors in Runtime source.&lt;br /&gt;
* STATUS_DATATYPE_MISALIGNMENT crash in Runtime with VisualStudio 2015 on ARM.&lt;br /&gt;
* Runtime fails to compile/run on Apple/iOS.&lt;br /&gt;
* [[STRIDE Runner]] may publish multiple result files in random order.&lt;br /&gt;
* [[STRIDE Runner]] may not properly escape JUnit annotations&#039; messages.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srapi.c&lt;br /&gt;
 srconn.c&lt;br /&gt;
 srib.c&lt;br /&gt;
 sribtr.c&lt;br /&gt;
 srmem.c&lt;br /&gt;
 srmsgptr.c&lt;br /&gt;
 srmsgque.c&lt;br /&gt;
 srmsgrt.c&lt;br /&gt;
 srmsgsub.c&lt;br /&gt;
 srstid.c&lt;br /&gt;
 srsuid.c&lt;br /&gt;
 srtest.c&lt;br /&gt;
 srtestutil.c&lt;br /&gt;
 srtime.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palIO.c&lt;br /&gt;
 palOS.c&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02e ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Race condition in Runtime when [[Test_Point_Testing_in_C/C%2B%2B|srTestPointSetup]] is called more than ones.&lt;br /&gt;
* [[STRIDE Runner]] improperly handles invalid result files.&lt;br /&gt;
* Intermittent failure in [[Test_Script|Test Scripts]] when run with &amp;lt;code&amp;gt;--log_level=all&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02f ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* Default [[STRIDE Runtime]] configuration is now non-multi-process&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* In Testspace, planned STRIDE suites result in failure.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] treat &amp;quot;No&amp;quot; and &amp;quot;Empty&amp;quot; ExcludedFromBuild differently&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code that may crash on ARM64 Windows.&lt;br /&gt;
* [[File_Transfer_Services | File Services]] on 64-bit [[STRIDE Runner]] not working with 32-bit TestApp&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Posix SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 Makefile&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02g ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] may crash on Linux.&lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces code without Visual Studio 64-bit &amp;quot;__unaligned&amp;quot; type qualifier.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.02k ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sbind|STRIDE Database Binder]] may crash on Windows when handling matching function declarations with different &amp;quot;calling conventions&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
= 5.0.01x = &lt;br /&gt;
&lt;br /&gt;
The code name of this release is&#039;&#039;Warm Waters&#039;&#039;. Released on Jun 3, 2014. &lt;br /&gt;
&lt;br /&gt;
== Testspace Schema execution ==&lt;br /&gt;
Now the [[STRIDE Runner]] allows execution of tests defined in a [http://help.testspace.com Testspace] schema.&lt;br /&gt;
&lt;br /&gt;
=== Input Parameters ===&lt;br /&gt;
Passing input parameters per test suite has been implemented. A new Test Class [[ Runtime_Test_Services#method_GetParam | method ]] and C [[ Runtime_Test_Services#srTestGetParam| function]] in the [[STRIDE Runtime]] allow accessing them by name.&lt;br /&gt;
&lt;br /&gt;
=== Interactive Mode ===&lt;br /&gt;
The [[File_Transfer_Services | File Transfer]] subsystem has been updated to allow remote (host) interactive prompt and process execution. In addition the [[STRIDE Runner]] now supports single test case execution.&lt;br /&gt;
&lt;br /&gt;
== Change Details ==&lt;br /&gt;
&lt;br /&gt;
=== Fixes ===&lt;br /&gt;
&#039;&#039;This section describes defects which have been corrected in STRIDE and the customer tracking number associated with them, if any, in brackets [].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Handling of input payload in [[STRIDE Runner]] times slower compared to output.&lt;br /&gt;
* [[STRIDE Runner]] generates report with incorrect timestamps for kernel [[Test Log | Test Logs]].&lt;br /&gt;
* [[STRIDE Runner]] may generate a report xml with invalid file annotation content.&lt;br /&gt;
&lt;br /&gt;
=== Tests in Scripts ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
&lt;br /&gt;
=== Tests in C/C++ ===&lt;br /&gt;
* Dynamic Test Suites are not supported no more.&lt;br /&gt;
* [[Test_Macros#Assertions|Test Assertion macro]] now by default (controlled via compiler define) throw exceptions.&lt;br /&gt;
* [[Test_Macros#Notes|Test Annotation macros]] and [[Test_Log|Test Log macros]] now by default (controlled via compiler define) support variadic arguments.&lt;br /&gt;
* Error handling has been improved.&lt;br /&gt;
&lt;br /&gt;
=== Runtime ===&lt;br /&gt;
* STRIDE Host Release &#039;&#039;&#039;5.0.01x&#039;&#039;&#039; is compatible with the Runtime Version &#039;&#039;&#039;5.0.01&#039;&#039;&#039;&lt;br /&gt;
* SLAP has been move in the core Runtime.&lt;br /&gt;
* &amp;lt;tt&amp;gt;srCOMPLEX_TARGET&amp;lt;/tt&amp;gt; is set by default now.&lt;br /&gt;
* &#039;&#039;All of the Runtime files have been modified. It is recommended that you update them all.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Posix SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
* &#039;&#039;All [[Windows SDK]] files have been modified.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Minor and Patch releases ==&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01a ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now can run executables (optionally in the background) and consume directly JUnit xml report. &lt;br /&gt;
* [[STRIDE Runner]] now reports overall suite duration.&lt;br /&gt;
* [[STRIDE Runner]] has been updated to handle common suite input defined in folder settings.&lt;br /&gt;
* [[STRIDE Runner]] now has improved error handling and supports &amp;quot;dry&amp;quot; run (for fast input validation).&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* Incremental &amp;quot;finish&amp;quot; upload via [[STRIDE Runner]] does not complete the result set.&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01b ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2sinstrument|STRIDE Instrumentation Generator]] produces incorrect code for function callbacks in a 64-bit build.&lt;br /&gt;
* [[Perl_Script_APIs#Assertions|Perl Assertions]] error out with undefined input. &lt;br /&gt;
* [[STRIDE Runner]] does not honor timeout for executables and scripts.&lt;br /&gt;
* [[STRIDE Runner]] errors out in &amp;quot;dry&amp;quot; run with no database.&lt;br /&gt;
* [[STRIDE Extensions for Visual Studio]] error out when solution is opened from a UNC location. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcgutil.h&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.props&lt;br /&gt;
 stride.targets&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01c ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] traversal of a [http://help.testspace.com Testspace] schema has been optimized.&lt;br /&gt;
* [[STRIDE Runner]] now shows the path to local report file and the URL to the uploaded Testspace results.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] is unable to compile header files with forwardly declared enums.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] calculates incorrect payload offset for user defined type arguments in a test class constructor.&lt;br /&gt;
* [[s2scompile|STRIDE Compiler]] errors out on enums with out of range values.&lt;br /&gt;
* [[STRIDE Runner]] is unable to explicitly run &amp;quot;disabled&amp;quot; folder/suite.&lt;br /&gt;
* [[STRIDE Runner]] creates empty xsl file on host with no internet connection.&lt;br /&gt;
* Static analysis of [[Windows SDK]] source results in a warning.&lt;br /&gt;
* [[STRIDE Runtime]] memory pool allocation returns misaligned pointers on 64-bit targets. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srcfg.h&lt;br /&gt;
 srtest.h&lt;br /&gt;
 srmem.c&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 stride.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01d ===&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Windows SDK]] may deadlock on timer stop.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following [[Windows SDK]] files have been modified:&#039;&#039;&lt;br /&gt;
 palOS.c&lt;br /&gt;
&lt;br /&gt;
=== 5.0.01e ===&lt;br /&gt;
&#039;&#039;New features and improvements:&#039;&#039; &lt;br /&gt;
* [[STRIDE Runner]] now generates a result file that can directly open in any major browser. &lt;br /&gt;
* [[STRIDE Runner]] now can upload to a sub-folder in [http://help.testspace.com/ Testspace].&lt;br /&gt;
* A new set of [[STRIDE Runner]] Testspace folder settings is defined. Some older settings are deprecated.&lt;br /&gt;
* New [[Training]] samples are provided.&lt;br /&gt;
&#039;&#039;Defects corrected and the customer tracking number associated with them, if any, in brackets []:&#039;&#039; &lt;br /&gt;
* [[Test_Point_Testing_in_C/C%2B%2B#srTestPointCheck|srTestPointCheck]] with more expected than actual may never return&lt;br /&gt;
* A &amp;lt;code&amp;gt;[section]&amp;lt;/code&amp;gt; in Testspace schema &amp;quot;root&amp;quot; settings hides [[STRIDE Runner]] command line options.&lt;br /&gt;
* [[STRIDE Runner]] is unable to init/connect when running a Testspace schema sub-folder/suite&lt;br /&gt;
* [[STRIDE Runner]] mangles non-STRIDE test suite input&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;The following Runtime files have been modified:&#039;&#039;&lt;br /&gt;
 srtest.c&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Perl_Script_APIs&amp;diff=14684</id>
		<title>Perl Script APIs</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Perl_Script_APIs&amp;diff=14684"/>
		<updated>2016-07-27T22:22:46Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
The Stride perl script model requires you to create perl  modules (*.pm files) to group your tests. The following documents the  API for the STRIDE::Test base class that you use when creating these  modules.&lt;br /&gt;
&lt;br /&gt;
=  STRIDE::Test =&lt;br /&gt;
&lt;br /&gt;
This is  the base class for test modules. It provides the following methods.&lt;br /&gt;
&lt;br /&gt;
== Declaring Tests  ==&lt;br /&gt;
&lt;br /&gt;
Once you have created a  package that inherits from STRIDE::Test, you can declare any subroutine  to be a test method by declaring it with the &#039;&#039;: Test&#039;&#039;  attribute. In addition to test methods, the following attributes  declare other kinds of subroutines:&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;subroutine attributes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;  &lt;br /&gt;
!  attribute!! description&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Test&lt;br /&gt;
| declares a  test method - will be executed automatically when the module is run.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|  Test(startup)&lt;br /&gt;
| startup method, called once before any of  the test methods have been executed.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|  Test(shutdown)&lt;br /&gt;
| shutdown method, called once after all  test methods have been executed.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| Test(setup)&lt;br /&gt;
| setup  fixture, called before each test method.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|  Test(teardown)&lt;br /&gt;
| teardown fixture, called after each test  method.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You are free to  declare as many methods as you like with these attributes. When more  than one method has been declared with the same attribute, the methods  will be called at the appropriate time in the order declared.&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
&lt;br /&gt;
These methods are all  available in the context of a test module that inherits from  STRIDE::Test.&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Methods&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;  &lt;br /&gt;
!  name !! description&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source  lang=&amp;quot;perl&amp;quot;&amp;gt;TestCase&amp;lt;/source&amp;gt;&lt;br /&gt;
| returns the default test case object. See [[#TestCase|here]] for more info.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source  lang=&amp;quot;perl&amp;quot;&amp;gt;Remote&amp;lt;/source&amp;gt;&lt;br /&gt;
| Returns a [[#STRIDE::Remote|STRIDE::Remote]] object that was initialized with the active database. This object is used for accessing captured at the time of compilation remote functions and constant values (macros and enums).&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;GetParam(name, defval)&amp;lt;/source&amp;gt;&lt;br /&gt;
| returns an input parameter&#039;s value associated with the test suite.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;TestCase AddCase(name, description)&amp;lt;/source&amp;gt;&lt;br /&gt;
| creates a new test case and adds it to the test suite.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;TestAnnotation AddAnnotation(level, name, description)&amp;lt;/source&amp;gt;&lt;br /&gt;
| creates a new test annotation and adds it to the test suite. The value of &#039;&#039;level&#039;&#039; could be one of the predefined constants:&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_TRACE&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;const&amp;quot;&amp;gt;symbols like these are exported as perl constants - don&#039;t quote these values  when you use them - rather, use the bare symbols and perl will use the constant value we provide&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_DEBUG&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_INFO&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_WARNING&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_ERROR&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_FATAL&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;SetData(name, value)&amp;lt;/source&amp;gt;&lt;br /&gt;
| associates a custom name-value pair with the test suite.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;TestPointSetup( &lt;br /&gt;
  expected =&amp;gt; [], &lt;br /&gt;
  unexpected  =&amp;gt; [],&lt;br /&gt;
  ordered  =&amp;gt; 0|1,&lt;br /&gt;
  strict =&amp;gt;  0|1,&lt;br /&gt;
  continue =&amp;gt; 0|1,&lt;br /&gt;
  expect_file =&amp;gt; filepath,&lt;br /&gt;
  predicate  =&amp;gt; coderef,&lt;br /&gt;
  replay_file  =&amp;gt; filepath,&lt;br /&gt;
  test_case  =&amp;gt; case)&amp;lt;/source&amp;gt;&lt;br /&gt;
| Creates a  new instance of [[#STRIDE::TestPoint|STRIDE::TestPoint]],  automatically passing the default TestCase() as the test case if none  is provided. Options are passed using hash-style arguments. The  supported arguments are:&lt;br /&gt;
; ordered : flag  that specifies whether or not the expectation set must occur in the  order specified. If set to true, the expectation list is treated as an  ordered list, otherwise we assume the list is unordered. Default value  is true (ordered processing). &lt;br /&gt;
; strict : flag that specifies if the list  is exclusive. If strict is specified, then the actual events (within the  specified universe of test points) must match the expectation list  exactly as specified. If strict processing is disabled, then other test  points within the universe are allowed to occur between items specified  in the expectation list. The default value is true (strict processing).&lt;br /&gt;
; continue : flag that specifies whether the expectation should continue to process test points even after the specified expectation has been minimally satisfied. Normally, a test will complete as soon as the expectation is satisfied. In some circumstances, however, it is necessary to continue waiting until the full timeout period (specified to the Wait function) before exiting. The default value is 0, indicating that the test will exit as soon as it is satisfied (or otherwise fails).&lt;br /&gt;
; expected : is  an array reference containing elements that are either  strings  representing the test point labels &#039;&#039;&#039;OR&#039;&#039;&#039;  an anonymous sub-array that contains these four items: &#039;&#039;&#039;[label, count,  predicate, expected_data]&#039;&#039;&#039;. The  four element arrayref elements are:&lt;br /&gt;
* &#039;&#039;label&#039;&#039; is the test point label (same as the  non array argument type). the label is also allowed to be specified  using one of the predefined constant values: &#039;&#039;&#039;TEST_POINT_ANY_IN_SET&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;const&amp;quot;/&amp;gt; or &#039;&#039;&#039;TEST_POINT_ANY_AT_ALL&#039;&#039;&#039;.  &#039;&#039;&#039;TEST_POINT_ANY_IN_SET&#039;&#039;&#039; is used to indicate a place  in the expectation list where &#039;&#039;&#039;any&#039;&#039;&#039;  test point that&#039;s otherwise explicitly defined in the set is permitted. &#039;&#039;&#039;TEST_POINT_ANY_AT_ALL&#039;&#039;&#039; is used to indicate a place in the expectation where &#039;&#039;&#039;any&#039;&#039;&#039; test point in the system is allowed. When either special  value is used in the expectation list, a predicate must &#039;&#039;also&#039;&#039; be specified. The test point is only  considered satisfied when the predicate returns true. These special values can be used to implement, among  other things, startup scenarios where you want to defer your expectation  list processing until a particular test point and/or data state have  been encountered. When specifying either value  in an &#039;&#039;&#039;unordered&#039;&#039;&#039; expectation, it is only allowed to  appear &#039;&#039;&#039;once&#039;&#039;&#039; in the expectation list and, in  that case, it is treated as a startup expectation whereby none of the  other test points are processed until the startup  expectation has been satisfied (when it&#039;s predicate returns true).&lt;br /&gt;
* &#039;&#039;count&#039;&#039; is the number of expected occurrences  - can be any positive integer value, or the special value &#039;&#039;&#039;TEST_POINT_ANY_COUNT&#039;&#039;&#039;&amp;lt;ref  name=&amp;quot;const&amp;quot;/&amp;gt;.&lt;br /&gt;
* &#039;&#039;predicate&#039;&#039;  must be a perl coderef for a function to call as a predicate. You are  free to define your own predicate function OR use on the three [[#Predicates |  standard ones]]  provided by STRIDE::Test.&lt;br /&gt;
* &#039;&#039;expected_data&#039;&#039;  will be passed as an argument to the predicate - intended to be used to  specify expected data. &lt;br /&gt;
If using the array form of  expectation, only the label entry is required - the remaining elements  are optional.&lt;br /&gt;
; unexpected :  is an array reference containing labels that are to be treated as  failure if they are encountered. For either &#039;&#039;expected&#039;&#039;  and &#039;&#039;unexpected&#039;&#039;, the special value &#039;&#039;&#039;TEST_POINT_EVERYTHING_ELSE&#039;&#039;&#039;&amp;lt;ref  name=&amp;quot;const&amp;quot;/&amp;gt; can be used alone to indicate that any test  points not explicitly listed in the set are considered part of this set.&lt;br /&gt;
; expect_file :  if you have previously captured YAML trace data in a file (using the [[Stride Runner]]), you can specify the file as the source of expectations using this  parameter. If you specify a YAML trace file, you should NOT also specify the &#039;&#039;&#039;expected&#039;&#039;&#039; items as they will be overridden by the YAML trace file.&lt;br /&gt;
; predicate : is a perl coderef to a default  predicate function to use for all expectation items. If any specific  entry in the expectation list has a predicate function, the  expectation&#039;s predicate will override this global value. By default, no  global predicate is assumed and no predicate is called unless specified  for each expectation item.&lt;br /&gt;
; replay_file : allows you to specify a YAML trace file and &#039;&#039;&#039;&#039;&#039;input&#039;&#039;&#039;&#039;&#039;  to the current test. If specified, the expectation will be validated  against the events specified in the file rather than live events  generated by a device under test.&lt;br /&gt;
; test_case : allows you to specify a test case to use for reporting the results. This is only useful for advanced users that are generating test cases dynamically within a test method. &lt;br /&gt;
&lt;br /&gt;
The returned object is of type [[#STRIDE::TestPoint|STRIDE::TestPoint]] and has access to all it&#039;s member functions.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Assertions ==&lt;br /&gt;
&lt;br /&gt;
Each of the following  assertion methods are provided for standard comparisons. For each, there  there are three different types, depending on the desired behavior upon  failure: &#039;&#039;&#039;EXPECT&#039;&#039;&#039;, &#039;&#039;&#039;ASSERT&#039;&#039;&#039;,  and &#039;&#039;&#039;EXIT&#039;&#039;&#039;. &#039;&#039;&#039;EXPECT&#039;&#039;&#039;  checks will fail the current test case but continue executing the test  method. &#039;&#039;&#039;ASSERT&#039;&#039;&#039; checks will fail the current test  case and exit the test method immediately.  &#039;&#039;&#039;EXIT&#039;&#039;&#039;  checks will fail the current test case, immediately exit the current  test method AND cease further execution of the test module.&lt;br /&gt;
&lt;br /&gt;
For simplicity, we refer to all the macros using a &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039; tag - when using the macros in test code, the &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039; should be replaced by one of the following: &#039;&#039;&#039;EXPECT&#039;&#039;&#039;, &#039;&#039;&#039;ASSERT&#039;&#039;&#039;, or &#039;&#039;&#039;EXIT&#039;&#039;&#039;, depending on how the test writer wants failures to be handled.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |  &#039;&#039;&#039;Boolean&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|- &lt;br /&gt;
! macro !!  Pass if&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039;_TRUE(&#039;&#039;cond&#039;&#039;);&lt;br /&gt;
| &#039;&#039;cond&#039;&#039; is true&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039;_FALSE(&#039;&#039;cond&#039;&#039;);&lt;br /&gt;
| &#039;&#039;cond&#039;&#039; is false&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |  &#039;&#039;&#039;Comparison&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
! macro !!  Pass if&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039;_EQ(&#039;&#039;val1&#039;&#039;,  &#039;&#039;val2&#039;&#039;);&lt;br /&gt;
| &#039;&#039;val1&#039;&#039; == &#039;&#039;val2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039;_NE(&#039;&#039;val1&#039;&#039;, &#039;&#039;val2&#039;&#039;);&lt;br /&gt;
| &#039;&#039;val1&#039;&#039; != &#039;&#039;val2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039;_LT(&#039;&#039;val1&#039;&#039;, &#039;&#039;val2&#039;&#039;);&lt;br /&gt;
| &#039;&#039;val1&#039;&#039;&amp;lt;nowiki&amp;gt; &amp;lt; &amp;lt;/nowiki&amp;gt;&#039;&#039;val2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039;_LE(&#039;&#039;val1&#039;&#039;, &#039;&#039;val2&#039;&#039;);&lt;br /&gt;
| &#039;&#039;val1&#039;&#039;&amp;lt;nowiki&amp;gt; &amp;lt;= &amp;lt;/nowiki&amp;gt;&#039;&#039;val2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039;_GT(&#039;&#039;val1&#039;&#039;, &#039;&#039;val2&#039;&#039;);&lt;br /&gt;
| &#039;&#039;val1&#039;&#039; &amp;gt; &#039;&#039;val2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039;_GE(&#039;&#039;val1&#039;&#039;, &#039;&#039;val2&#039;&#039;);&lt;br /&gt;
| &#039;&#039;val1&#039;&#039; &amp;gt;= &#039;&#039;val2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
For  all of the value comparison methods (&#039;&#039;&#039;_EQ&#039;&#039;&#039;,  &#039;&#039;&#039;_NE&#039;&#039;&#039;, etc.), the comparison is numeric if  both arguments are numeric -- otherwise the comparison is a case  sensitive string comparison. If case insensitive comparison is needed,  simply wrap both arguments with perl&#039;s builtin &#039;&#039;&#039;lc()&#039;&#039;&#039;  (lowercase) or &#039;&#039;&#039;uc()&#039;&#039;&#039; (uppercase) functions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |  &#039;&#039;&#039;Predicates&#039;&#039;&#039;&lt;br /&gt;
|- &lt;br /&gt;
! macro !!  Pass if&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;&#039;&#039;prefix&#039;&#039;&#039;&#039;&#039;_PRED(&#039;&#039;coderef&#039;&#039;,  &#039;&#039;data&#039;&#039;)&lt;br /&gt;
| &#039;&#039;&amp;amp;coderef&#039;&#039;(&#039;&#039;data&#039;&#039;)  returns true. The predicate function is specified by &#039;&#039;coderef&#039;&#039; with optional data &#039;&#039;data&#039;&#039;. The predicate can also return the  special value &#039;&#039;&#039;TEST_POINT_IGNORE&#039;&#039;&#039;&amp;lt;ref  name=&amp;quot;const&amp;quot;/&amp;gt;&#039; to indicate that the event should be ignored.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each  of these expectation methods also supports the following optional named  arguments: &lt;br /&gt;
; test_case =&amp;gt; case : allows you to  apply the check to a test case other than the current default&lt;br /&gt;
; message =&amp;gt;  &amp;quot;message&amp;quot; : allows you to specify an additional message to include if  the check fails. &lt;br /&gt;
&lt;br /&gt;
Because these arguments are  optional, they are passed using named argument (hash-style) syntax after  the required parameters that are shown above.&lt;br /&gt;
&lt;br /&gt;
== Annotations ==&lt;br /&gt;
&lt;br /&gt;
The following methods can be used to annotate a test case. Typically these methods are used to add  additional information about the state of the test to the report.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |  &#039;&#039;&#039;Annotation Methods&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;  &lt;br /&gt;
!  name !! description&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source  lang=&amp;quot;perl&amp;quot;&amp;gt;NOTE_INFO(message)&amp;lt;/source&amp;gt;&lt;br /&gt;
| creates an info note in your test results report.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source  lang=&amp;quot;perl&amp;quot;&amp;gt;NOTE_WARN(message)&amp;lt;/source&amp;gt;&lt;br /&gt;
| creates a warning note in your test results report.&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source  lang=&amp;quot;perl&amp;quot;&amp;gt;NOTE_ERROR(message)&amp;lt;/source&amp;gt;&lt;br /&gt;
| creates an error note in your test results report.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Each  of these note methods also supports the following optional named arguments: &lt;br /&gt;
; test_case =&amp;gt; case : allows you to add the note to a test case other than the current default&lt;br /&gt;
; file =&amp;gt;  file : allows you to attach a file along with the annotation message. &lt;br /&gt;
; test_point  =&amp;gt; test_point_hashref : If you are annotating your report in the  context of a predicate with a specific test point, you might want to specify the test point using this parameter. This will cause your annotation to be grouped in the final report with the annotation message  that corresponds to the test point hit message. By default, a host  timestamp value is used to generate the NOTE annotation, which generally causes the NOTE annotations to group toward the end of the test case  report.&lt;br /&gt;
&lt;br /&gt;
Because these arguments are optional, they are passed using named argument (hash-style) syntax after the required parameters that are shown above.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
We  have preliminary support for documentation extraction in the test  modules using the standard perl POD formatting tokens. &lt;br /&gt;
&lt;br /&gt;
The POD  that you include in your test module currently must follow these  conventions:&lt;br /&gt;
&lt;br /&gt;
* it must begin  with a &#039;&#039;head1  NAME&#039;&#039; section and the text of  this section must contain the name of the package, preferably near the  beginning.&lt;br /&gt;
* a &#039;&#039;head1 DESCRIPTION&#039;&#039;  can follow the &#039;&#039;NAME&#039;&#039; section. If provided, it will be  used as the description of the test suite created for the test unit.&lt;br /&gt;
* This  NAME/DESCRIPTION block must finish with an empty &#039;&#039;head1 METHODS&#039;&#039; section.&lt;br /&gt;
* each of the  test methods can be documented by preceding them with a &#039;&#039;head2&#039;&#039; section with the same name as the  test method (subroutine name). The text in this section will be used as  the testcase description.&lt;br /&gt;
&lt;br /&gt;
== Predicates ==&lt;br /&gt;
&lt;br /&gt;
STRIDE expectation testing  allows you to specify predicate functions for sophisticated data  validation. We provide several standard predicates in the STRIDE::Test  package, or you are free to define your own predicate functions.&lt;br /&gt;
&lt;br /&gt;
=== Builtin  Predicates ===&lt;br /&gt;
The  STRIDE::Test library provides a few standard predicates which you are  free to use in your expectations:&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Built-In Predicates&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;  &lt;br /&gt;
!  predicate !! description&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;TestPointStrCmp&#039;&#039;&#039;&lt;br /&gt;
| does a case &#039;&#039;&#039;&#039;&#039;sensitive&#039;&#039;&#039;&#039;&#039;  comparison of the test point data and the &#039;&#039;expected_data&#039;&#039;  (specified as part of the expectation)&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;  &lt;br /&gt;
|  &#039;&#039;&#039;TestPointStrCaseCmp&#039;&#039;&#039;&lt;br /&gt;
| does a case &#039;&#039;&#039;&#039;&#039;insensitive&#039;&#039;&#039;&#039;&#039;  comparison of the test point data and the &#039;&#039;expected_data&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;  &lt;br /&gt;
|  &#039;&#039;&#039;TestPointMemCmp&#039;&#039;&#039;&lt;br /&gt;
| does a  bytewise comparison of the test point data and the &#039;&#039;expected_data&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;  &lt;br /&gt;
|  &#039;&#039;&#039;TestPointDefaultCmp&#039;&#039;&#039;&lt;br /&gt;
| pass-through  function that calls &#039;&#039;&#039;TestPointMemCmp&#039;&#039;&#039; for binary test point data or &#039;&#039;&#039;TestPointStrCmp&#039;&#039;&#039; otherwise. This is useful as a  global predicate since it implements an appropriate default data  comparison.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== User Defined  Predicates ===&lt;br /&gt;
User defined  predicates are subroutines of the following form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
sub  myPredicate &lt;br /&gt;
{&lt;br /&gt;
    my  ($test_point, $expected_data) = @_;&lt;br /&gt;
    my $status  = 0;&lt;br /&gt;
     # access the test point data as $test_point-&amp;gt;{data}, &lt;br /&gt;
    # and the  label as $test_point-&amp;gt;{label}&lt;br /&gt;
&lt;br /&gt;
    # set $status according to whether or  not your predicate passes&lt;br /&gt;
    return $status;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The predicate  function is passed two arguments: the current test point and the  expected data that was specified as part of the expectation. The test  point data is a reference to a hash with the following fields: &lt;br /&gt;
; label : the test point label&lt;br /&gt;
; data : the  data payload for the test point (if any)&lt;br /&gt;
; data_as_hex :  an alternate form of the data payload, rendered as a string of hex  characters&lt;br /&gt;
; size : the size of the data payload&lt;br /&gt;
; bin : flag  indicating whether or not the data payload is binary&lt;br /&gt;
; file : the  source file for the test point&lt;br /&gt;
; line :  the line number for the test  point&lt;br /&gt;
&lt;br /&gt;
The expected data is passed as a single  scalar, but you can use references to compound data structures (hashes,  arrays) if you need more complex expected data.&lt;br /&gt;
&lt;br /&gt;
The predicate  function should return a true value if it passes, false if not, or &#039;&#039;&#039;TEST_POINT_IGNORE&#039;&#039;&#039;&amp;lt;ref  name=&amp;quot;const&amp;quot;/&amp;gt; if the test point should be ignored completely.&lt;br /&gt;
&lt;br /&gt;
= STRIDE::Remote =&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;STRIDE::Remote&#039;&#039; class uses perl &#039;&#039;&#039;AUTOLOAD&#039;&#039;&#039;-ing to provide a convenient syntax for making simple function calls and retrieving database constants in perl. Given any properly initialized &#039;&#039;STRIDE::Test&#039;&#039; object, any captured function or constant (macro) is available directly as method or properties of the exported &#039;&#039;Remote&#039;&#039; object. Constants can also be accessed via the tied hash &#039;&#039;constants&#039;&#039; member. &lt;br /&gt;
&lt;br /&gt;
For example, given a database with two functions and a macro:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int foo(const char * path);&lt;br /&gt;
void bar(double value);&lt;br /&gt;
&lt;br /&gt;
#define MY_PI_VALUE 3.1415927&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In perl these methods/constants are invokable using the exported &#039;&#039;STRIDE::Test&#039;&#039; Remote object:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
my  $retval = Remote-&amp;gt;foo(&amp;quot;my string&amp;quot;);&lt;br /&gt;
Remote-&amp;gt;bar(Constants-&amp;gt;{MY_PI_VALUE});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Asynchronous  invocation == &lt;br /&gt;
&lt;br /&gt;
Functions can also be called asynchronously by using the &#039;&#039;async&#039;&#039; delegator within the &#039;&#039;Remote&#039;&#039; object. When invoked this way, the function call will return a handle object that can be used to wait for the function return value - for example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;&lt;br /&gt;
my $h = Remote-&amp;gt;async-&amp;gt;foo(&amp;quot;my string&amp;quot;);&lt;br /&gt;
my $retval = $h-&amp;gt;Wait(1000);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Wait&#039;&#039;&#039; function takes one optional argument -- the timeout duration (in milliseconds) that indicates the maximum  time to wait for the function to return. If the timeout value is not  provided, &#039;&#039;Wait&#039;&#039; will wait indefinitely for the  function to return. If a timeout is specified and expires before the  function returns, the method with &#039;&#039;die&#039;&#039;  with a timeout error message - so you might want to wrap your &#039;&#039;&#039;Wait&#039;&#039;&#039; call in an &amp;lt;tt&amp;gt;eval{};&amp;lt;/tt&amp;gt; statement if you want to  gracefully handle the timeout condition.&lt;br /&gt;
&lt;br /&gt;
= STRIDE::TestPoint =&lt;br /&gt;
&lt;br /&gt;
STRIDE::TestPoint  objects are used to create test point expectation tests. These objects  are created using the exported TestPointSetup factory function of the  STRIDE::Test class. Once a STRIDE::TestPoint object has been created  with the desired expectations, two functions can be called:&lt;br /&gt;
&lt;br /&gt;
; Wait(timeout) : This method processes test  points that have occurred on the target and assesses failure based on  the parameters you provided when creating the TestPoint object. The  timeout parameter indicates how long (in milliseconds) to Wait for the  specified events. If no timeout value is provided, &#039;&#039;&#039;Wait&#039;&#039;&#039; will proceed indefinitely or until a  clear pass/failure determination can be made.&lt;br /&gt;
; Check() : this  is equivalent to Wait with a very small timeout. As such, it  essentially verifies that your specified test points have already been  hit.&lt;br /&gt;
&lt;br /&gt;
= Reporting Model =&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl framework includes an implementation of our [[Reporting Model]] that is common across all STRIDE components. The Test module gives explicit access to key elements of the report model, Cases and Annotaions. Here are a description of the methods available for each of these Objects.&lt;br /&gt;
&lt;br /&gt;
== TestCase ==&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Methods&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;  &lt;br /&gt;
!  name !! description&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;SetStatus(status, duration) &amp;lt;/source&amp;gt;&lt;br /&gt;
| sets the test case status. The value of &#039;&#039;status&#039;&#039; could be one of the predefined constants:&lt;br /&gt;
* &#039;&#039;&#039;TEST_FAIL&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;const&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;TEST_PASS&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;TEST_NOTINUSE&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;TEST_INPROGRESS&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;TEST_DONE&#039;&#039;&#039; - applicable to dynamic cases - sets the status to &#039;&#039;&#039;pass&#039;&#039;&#039; unless already set to &#039;&#039;&#039;fail&#039;&#039;&#039; or &#039;&#039;&#039;not-in-use&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;TestAnnotation AddAnnotation(level, name, description)&amp;lt;/source&amp;gt;&lt;br /&gt;
| creates a new test annotation and adds it to the test case. The value of &#039;&#039;level&#039;&#039; could be one of the predefined consttants:&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_TRACE&#039;&#039;&#039;&amp;lt;ref name=&amp;quot;const&amp;quot;/&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_DEBUG&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_INFO&#039;&#039;&#039; &lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_WARNING&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_ERROR&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;ANNOTATION_FATAL&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;SetData(name, value)&amp;lt;/source&amp;gt;&lt;br /&gt;
| associates a custom name-value pair with the test case.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== TestAnnotation ==&lt;br /&gt;
&lt;br /&gt;
{|  class=&amp;quot;prettytable&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &#039;&#039;&#039;Methods&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;  &lt;br /&gt;
!  name !! description&lt;br /&gt;
&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| &amp;lt;source lang=&amp;quot;perl&amp;quot;&amp;gt;AddComment(label, message)&amp;lt;/source&amp;gt;&lt;br /&gt;
| adds a new comment to the test annotation.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Notes ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14683</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14683"/>
		<updated>2016-07-27T19:41:06Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows and Linux.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86_64)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-x86_64-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;==&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only the versions 5.8.9, 5.10.x, 5.12.x, 5.14.x, 5.16.x, 5.18.x and 5.20.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use the standard &#039;&#039;&#039;32-bit&#039;&#039;&#039; Perl distributions from [http://www.activestate.com/activeperl/downloads ActiveState].&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
You can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]. &lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
	<entry>
		<id>https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14682</id>
		<title>Framework Setup</title>
		<link rel="alternate" type="text/html" href="https://www.stridewiki.com/index.php?title=Framework_Setup&amp;diff=14682"/>
		<updated>2016-07-27T19:35:33Z</updated>

		<summary type="html">&lt;p&gt;Ivailop: /* Perl Installation (Optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction = &lt;br /&gt;
The packages described below contain all of the &#039;&#039;source&#039;&#039; and &#039;&#039;binary&#039;&#039; components required to&lt;br /&gt;
* setup a desktop with the &#039;&#039;&#039;STRIDE Runner&#039;&#039;&#039;&lt;br /&gt;
* integrate the &#039;&#039;&#039;STRIDE Runtime&#039;&#039;&#039; with the target device&lt;br /&gt;
* add the &#039;&#039;&#039;STRIDE Compiler&#039;&#039;&#039; (aka &#039;&#039;Build tools&#039;&#039;) to the software build system.&lt;br /&gt;
&lt;br /&gt;
The desktops supported are Windows, Linux, and FreeBSD.&lt;br /&gt;
&lt;br /&gt;
= Packages =&lt;br /&gt;
Files are installed by unzipping the provided package to your PC. Packages are available targeting the following operating systems (your version number may be different than that shown):&lt;br /&gt;
;Windows (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-windows_5.x.yy.zip&amp;lt;/tt&amp;gt;&lt;br /&gt;
;Linux (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-linux_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
;FreeBSD (x86)&lt;br /&gt;
:&amp;lt;tt&amp;gt;STRIDE_framework-freebsd_5.x.yy.tgz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please see the appropriate installation instructions below.&lt;br /&gt;
&lt;br /&gt;
= Windows =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your root directory and that the directory &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
The example uses the open source [http://www.7-zip.org/ 7-Zip] utility to unzip the archive.&lt;br /&gt;
&lt;br /&gt;
 cd \stride&lt;br /&gt;
 &amp;quot;\Program Files\7-Zip\7z&amp;quot; x ..\STRIDE_framework-windows_5.x.yy.zip&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
For instructions on modifying it, please see [http://support.microsoft.com/kb/310519 http://support.microsoft.com/kb/310519].&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;Make sure to insert &#039;&#039;&#039;no spaces&#039;&#039;&#039; before and after the semicolon separators(;).&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should create it as a user environment variable.&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;\stride\bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;\stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Linux/FreeBSD =&lt;br /&gt;
&lt;br /&gt;
The following installation example assumes the the installation package is located in your home directory and that the directory &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; exists. You can choose to install to a different location (all instructions below assume you are installing into &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
 cd ~/stride&lt;br /&gt;
 tar -zxvf ../STRIDE_framework-linux_5.x.yy.tgz&lt;br /&gt;
&lt;br /&gt;
Once unzipped, files will have been installed under the &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
=== Updated PATH ===&lt;br /&gt;
As a final step, you will need to update your &amp;lt;tt&amp;gt;[http://en.wikipedia.org/wiki/Path_(variable) PATH]&amp;lt;/tt&amp;gt; environment variable to include &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
If you use the bash shell, enter the following at a command prompt, or to automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export PATH=$PATH:~/stride/bin&lt;br /&gt;
&lt;br /&gt;
For other shells, and more information, please see the following articles:&lt;br /&gt;
* [http://www.linuxheadquarters.com/howto/basic/path.shtml http://www.linuxheadquarters.com/howto/basic/path.shtml].&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Environment_variable#UNIX http://en.wikipedia.org/wiki/Environment_variable]&lt;br /&gt;
&lt;br /&gt;
=== Create/Update STRIDE_DIR===&lt;br /&gt;
Verify that the  &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable exists and is set to the root installation directory (&amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt;). If this environment variable does not yet exist, you should automatically set at each login, add to your &amp;lt;tt&amp;gt;.bashrc&amp;lt;/tt&amp;gt;:&lt;br /&gt;
 export STRIDE_DIR=~/stride&lt;br /&gt;
&lt;br /&gt;
To confirm installation and display &#039;&#039;help&#039;&#039; run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
 stride -h&lt;br /&gt;
&lt;br /&gt;
NOTE: &#039;&#039;In a 64-bit environment the above may fail with errors like: &amp;lt;code&amp;gt;&amp;quot;/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory&amp;quot;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;quot;ELF interpreter /libexec/ld-elf32.so.1 not found&amp;quot;&amp;lt;/code&amp;gt;. To resolve this issue install the appropriate 32-bit compatibility libraries for your Linux/FreeBSD distribution:&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get install libc6:i386 libstdc++6:i386&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo setarch i386 yum install glibc libstdc++&lt;br /&gt;
* SUSE&lt;br /&gt;
 sudo zypper install glibc-32bit libstdc++6-32bit&lt;br /&gt;
* Arch&lt;br /&gt;
Make sure to enable the [https://wiki.archlinux.org/index.php/Multilib multilib] repository.&lt;br /&gt;
 sudo pacman lib32-glibc lib32-gcc-libs&lt;br /&gt;
* FreeBSD&lt;br /&gt;
Make sure to have &amp;lt;code&amp;gt;lib32&amp;lt;/code&amp;gt; installed (via [http://www.freebsd.org/cgi/man.cgi?query=sysinstall&amp;amp;apropos=0&amp;amp;sektion=0&amp;amp;manpath=FreeBSD+8.4-RELEASE&amp;amp;arch=default&amp;amp;format=html sysinstall(8)] - Configure|Distributions|lib32) and have your kernel built with:&lt;br /&gt;
 options 	COMPAT_FREEBSD32	# Compatible with i386 binaries&lt;br /&gt;
&lt;br /&gt;
=== Uninstalling ===&lt;br /&gt;
To uninstall STRIDE simply:&lt;br /&gt;
* Remove any reference to &amp;lt;tt&amp;gt;~/stride/bin&amp;lt;/tt&amp;gt; in your &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; environment variable. &lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;STRIDE_DIR&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
* Remove &amp;lt;tt&amp;gt;~/stride&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
= Directories and Files =&lt;br /&gt;
&lt;br /&gt;
To integrate Stride in to your target build system it is required to understand the directories layout and the files inside then. A quick orientation is shown below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;u&amp;gt;&#039;&#039;NOTE:&#039;&#039;&amp;lt;/u&amp;gt; &#039;&#039;It&#039;s not necessary to understand the workings of Stride to perform evaluation or training. The framework package contains a [[Stride Sandbox]] that utilizes a SDK that is set up with appropriate options and settings to enable &amp;quot;out of the box&amp;quot; functionality.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;bin&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the [[Build Tools|Stride Build Tools]] and the [[Stride Runner]].&lt;br /&gt;
&lt;br /&gt;
The build tools are invoked early on in the target software build process to generate special Stride artifacts that are used in subsequent build steps and later when running tests against the target. When using the Stride Sandbox, these files are needed on the host computer since this is where we are building the target application. In a production environment, these files are needed only on the computer that performs the target software build.&lt;br /&gt;
&lt;br /&gt;
The [[Stride Runner]] is the program you use to run tests from the host.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;lib&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains a set of Stride specific core scripting libraries along with prebuild binaries intended to be used for Perl based test scripts.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;samples&amp;lt;/tt&amp;gt;==&lt;br /&gt;
The Samples directory contains a number of source files used for training and evaluation.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;tt&amp;gt;SDK&amp;lt;/tt&amp;gt;==&lt;br /&gt;
This directory contains the sub-directories &amp;lt;tt&amp;gt;Posix/Windows&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Runtime&amp;lt;/tt&amp;gt;, which contain source code that comprises the [[STRIDE Runtime]]. These sources are built in to a static libary (e.g. STRIDE Runtime library - &amp;lt;tt&amp;gt;stride.a/lib&amp;lt;/tt&amp;gt;) as a dependency of your Test Application. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;tt&amp;gt;Posix&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;Windows&amp;lt;/tt&amp;gt; directories contain the target operating system specific source and configuration. If you are interested in the details, consult the articles [[Posix SDK]] and [[Windows SDK]]. Each of them contains the following sub-directories:&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;tt&amp;gt;settings&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains a set of &amp;lt;tt&amp;gt;stride.XXX.s2scompile&amp;lt;/tt&amp;gt; files, where &amp;lt;tt&amp;gt;XXX&amp;lt;/tt&amp;gt; coresponds to the target CPU architecture (i.e. X86, ARM...). These files, used by the [[s2scompile|STRIDE Compiler]], specify target CPU characteristics (endian-ness, data sizes and alignments). On Windows, this directory also contains a set of files for [[STRIDE_Extensions_for_Visual_Studio|building with Visual Studio]].&lt;br /&gt;
*&amp;lt;tt&amp;gt;src&amp;lt;/tt&amp;gt;&lt;br /&gt;
: This directory contains the source of the target [[Platform Abstraction Layer]] PAL. In addition there is a sample Makefile used to produce a sandbox TestApp.&lt;br /&gt;
&lt;br /&gt;
= Perl Installation (Optional) =&lt;br /&gt;
If you intend to use &#039;&#039;&#039;Test Scripts&#039;&#039;&#039; you will need a recent version of Perl (x86 with threads support) installed. &lt;br /&gt;
&lt;br /&gt;
As of this writing, we support only the versions 5.8.9, 5.10.x, 5.12.x, 5.14.x, 5.16.x, 5.18.x and 5.20.x of Perl. &lt;br /&gt;
&lt;br /&gt;
== Windows == &lt;br /&gt;
It is required to use the standard &#039;&#039;&#039;32-bit&#039;&#039;&#039; Perl distributions from [http://www.activestate.com/activeperl/downloads ActiveState].&lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 set PATH=...\perl\bin;%PATH%&lt;br /&gt;
 set PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of STRIDE tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
You can easily install these packages using the [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html ppm tool]. If you access the Internet via a proxy make sure to read [http://docs.activestate.com/activeperl/5.16/faq/ActivePerl-faq2.html#ppm_and_proxies this]. Simple command-line installation of PACKAGE_NAME (the package to install) typically just requires typing:&lt;br /&gt;
&lt;br /&gt;
 ppm install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
We recommend you to use the standard &#039;&#039;&#039;64-bit&#039;&#039;&#039; Perl distribution that comes with your OS version or one provided by [http://www.activestate.com/activeperl/downloads ActiveState]. &lt;br /&gt;
&lt;br /&gt;
Depending on the way the installation was performed, you may have to update your PATH and reset any custom PERL5LIB, e.g.:&lt;br /&gt;
&lt;br /&gt;
 export PATH=.../perl/bin:$PATH&lt;br /&gt;
 export PERL5LIB=&lt;br /&gt;
&lt;br /&gt;
The following additional (non-standard) Perl packages are also required for full functionality of Stride tests in perl:&lt;br /&gt;
&lt;br /&gt;
* [http://search.cpan.org/perldoc/Time::HiRes Time::HiRes]&lt;br /&gt;
* [http://search.cpan.org/perldoc/YAML::XS YAML::XS]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Class::ISA Class::ISA]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Pod::POM Pod::POM]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Devel::Symdump Devel::Symdump]&lt;br /&gt;
* [http://search.cpan.org/perldoc/Config::Tiny Config::Tiny]&lt;br /&gt;
&lt;br /&gt;
The simplest method for installing packages is via the [http://www.perl.com/doc/manual/html/lib/CPAN.html CPAN shell]. If you access the Internet via a proxy make sure to set the appropriate [http://search.cpan.org/dist/CPAN/lib/CPAN.pm#Config_Variables CPAN config variables]. To start the shell in interactive mode:&lt;br /&gt;
&lt;br /&gt;
 perl -MCPAN -e shell&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&amp;lt;u&amp;gt;NOTE:&amp;lt;/u&amp;gt;&#039;&#039; &#039;&#039;If your perl is installed in a system directory (&amp;lt;tt&amp;gt;/usr/bin/perl&amp;lt;/tt&amp;gt;, for instance), you will need root access to install shared modules.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Once in the shell, search for and install the latest stable version of PACKAGE_NAME (the package to install):&lt;br /&gt;
&lt;br /&gt;
 install PACKAGE_NAME&lt;br /&gt;
&lt;br /&gt;
The STRIDE perl packages also need to load your system&#039;s &#039;&#039;&#039;libperl.so&#039;&#039;&#039; (shared object file) at runtime. Depending on your system, this file should be loadable from a perl CORE directory or from one of the shared system directories. If you &#039;&#039;&#039;DO NOT&#039;&#039;&#039; have this shared library on your system, you might need to install a &#039;&#039;libperl-dev&#039;&#039;, &#039;&#039;perl-devel&#039;&#039; or &#039;&#039;perl-libs&#039;&#039; package in order to get it. Here is how you can do that on the console of some Linux distributions:&lt;br /&gt;
&lt;br /&gt;
* Debian / Ubuntu&lt;br /&gt;
 sudo apt-get install libperl-dev&lt;br /&gt;
* Fedora / CentOS / RHEL&lt;br /&gt;
 sudo yum -y install perl-devel&lt;br /&gt;
&lt;br /&gt;
== Validation ==&lt;br /&gt;
Once you have installed Perl we recommend you to run the following command in a console window:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
stride --diagnostics Perl --output PerlCheck&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If everything was properly set up you should get the following output:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Executing diagnostics...&lt;br /&gt;
  script &amp;quot;/Perl&amp;quot;&lt;br /&gt;
    &amp;gt; 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms.&lt;br /&gt;
  ---------------------------------------------------------------------&lt;br /&gt;
  Summary: 2 passed, 0 failed, 0 in progress, 0 not in use, 486.95 ms&lt;br /&gt;
&lt;br /&gt;
Saving result file...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In addition a report file with name &amp;lt;tt&amp;gt;PerlCheck.xml&amp;lt;/tt&amp;gt; will be created in the current directory. If interested in the details you could open that report file in a browser of your choice.&lt;/div&gt;</summary>
		<author><name>Ivailop</name></author>
	</entry>
</feed>