<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Modules</title><link>https://sourceforge.net/p/asil/wiki/Modules/</link><description>Recent changes to Modules</description><atom:link href="https://sourceforge.net/p/asil/wiki/Modules/feed" rel="self"/><language>en</language><lastBuildDate>Sun, 23 Feb 2014 22:35:44 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/asil/wiki/Modules/feed" rel="self" type="application/rss+xml"/><item><title>Modules modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Modules/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v7
+++ v8
@@ -31,4 +31,4 @@
 --------------------------------------
 If you're module will contain only [DASIL](Derivatives-DASIL) scripts, the tool that creates the module could be able to make the module as only a compressed package of obfuscated scripts files.  When you make a module containing [DASIL](Derivatives-DASIL) scripts and you want to make the module executable such that it runs one of the scripts, you need to specify the &lt;code&gt;main-script&lt;/code&gt; attribute on the &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; element.  It must be in the format "&lt;code&gt;namespace@identifier&lt;/code&gt;".  The "&lt;code&gt;namespace&lt;/code&gt;" part must be a namespace included in this module (not a base namespace or module).  The "&lt;code&gt;identifier&lt;/code&gt;" part must be the ASIL identifier you listed in the namespace for the script you want to run when the module is executed.  The script must be declared as public by the namespace.

-Note: If you specify &lt;code&gt;main-script&lt;/code&gt;, you're module won't run directly any SASIL code&amp;mdash;even if it contains a &lt;code&gt;main&lt;/code&gt; procedure somewhere.  Furthermore, the &lt;code&gt;main-script&lt;/code&gt; and &lt;code&gt;main-type&lt;/code&gt; attributes are mutually exclusive.  Use one other the other&amp;mdash;not both
+Note: If you specify &lt;code&gt;main-script&lt;/code&gt;, you're module won't run directly any SASIL code&amp;mdash;even if it contains a &lt;code&gt;main&lt;/code&gt; procedure somewhere.  Furthermore, the &lt;code&gt;main-script&lt;/code&gt; and &lt;code&gt;main-type&lt;/code&gt; attributes are mutually exclusive.  Use one other the other&amp;mdash;not both.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sun, 23 Feb 2014 22:35:44 -0000</pubDate><guid>https://sourceforge.net282e0a9219fad74cd68b12217338c57d16e5d223</guid></item><item><title>Modules modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Modules/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v6
+++ v7
@@ -12,7 +12,7 @@

 Element | Parent | Valid children | Valid attributes | Details
 --------|--------|----------------|------------------|--------
-&lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | N/A | &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;final&lt;/code&gt; (optional), &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;main-script&lt;/code&gt; ([DASIL](Derivatives-DASIL) only) | Root element!  The &lt;code&gt;name&lt;/code&gt; attribute should be the full name of the module, but without the filename extension.  The &lt;code&gt;final&lt;/code&gt; attribute, if present, prevents other modules from deriving from this module.  The &lt;code&gt;version&lt;/code&gt; attribute lists the version number of this module.  It will be compared with the &lt;code&gt;min-version&lt;/code&gt; and &lt;code&gt;max-version&lt;/code&gt; attributes of any modules that declare a dependency on this module with the &lt;code&gt;&amp;lt;depends-on&amp;gt;&lt;/code&gt; element.  The &lt;code&gt;main-script&lt;/code&gt; attribute is required if you expect to run this module as a [DASIL](Derivatives-DASIL) script.
+&lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | N/A | &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;final&lt;/code&gt; (optional), &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;main-script&lt;/code&gt; ([DASIL](Derivatives-DASIL) only), &lt;code&gt;main-type&lt;/code&gt; (see notes on use) | Root element!  The &lt;code&gt;name&lt;/code&gt; attribute should be the full name of the module, but without the filename extension.  The &lt;code&gt;final&lt;/code&gt; attribute, if present, prevents other modules from deriving from this module.  The &lt;code&gt;version&lt;/code&gt; attribute lists the version number of this module.  It will be compared with the &lt;code&gt;min-version&lt;/code&gt; and &lt;code&gt;max-version&lt;/code&gt; attributes of any modules that declare a dependency on this module with the &lt;code&gt;&amp;lt;depends-on&amp;gt;&lt;/code&gt; element.  The &lt;code&gt;main-script&lt;/code&gt; attribute is required if you expect to run this module as a [DASIL](Derivatives-DASIL) script.  If you don't use &lt;code&gt;main-script&lt;/code&gt;, you must use &lt;code&gt;main-type&lt;/code&gt; to make the module executable.  &lt;code&gt;main-type&lt;/code&gt; must be a fully qualified type name with declares a valid &lt;code&gt;main&lt;/code&gt; function as described in [SASIL](Derivatives-SASIL).
 &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt; | Specifies the module that this module is based on.  The &lt;code&gt;name&lt;/code&gt; attribute should be the name given in its module declaration file.  List each module you need to derive from with its own &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; entry.
 &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;no-child-namespaces&lt;/code&gt; (optional) | Specifies a namespace that will be part of this module.  Use the &lt;code&gt;name&lt;/code&gt; attribute to specify the fully qualified name of the namespace you want to include.  Including a namespace includes **everything** inside it.  If you need to break a namespace up into several modules, list the namespaces inside it, not the parent namespace!  If there are no child namespaces, you may need to break the namespace up.  Use of the optional &lt;code&gt;no-child-namespaces&lt;/code&gt; attribute causes the compiler to include the types declared directly inside the specified namespace and nothing from that namespace's child namespaces.
 &lt;code&gt;&amp;lt;depends-on&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;min-version&lt;/code&gt;, &lt;code&gt;max-version&lt;/code&gt; | Lists the name of a module that his module depends on.  The &lt;code&gt;name&lt;/code&gt; attribute should match the name given for the module you're declaring a dependency on.  The &lt;code&gt;min-version&lt;/code&gt; and &lt;code&gt;max-version&lt;/code&gt; attributes will be compared with the &lt;code&gt;version&lt;/code&gt; given in the copy of the module that was found.
@@ -31,4 +31,4 @@
 --------------------------------------
 If you're module will contain only [DASIL](Derivatives-DASIL) scripts, the tool that creates the module could be able to make the module as only a compressed package of obfuscated scripts files.  When you make a module containing [DASIL](Derivatives-DASIL) scripts and you want to make the module executable such that it runs one of the scripts, you need to specify the &lt;code&gt;main-script&lt;/code&gt; attribute on the &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; element.  It must be in the format "&lt;code&gt;namespace@identifier&lt;/code&gt;".  The "&lt;code&gt;namespace&lt;/code&gt;" part must be a namespace included in this module (not a base namespace or module).  The "&lt;code&gt;identifier&lt;/code&gt;" part must be the ASIL identifier you listed in the namespace for the script you want to run when the module is executed.  The script must be declared as public by the namespace.

-Note: If you specify &lt;code&gt;main-script&lt;/code&gt;, you're module won't run directly any SASIL code&amp;mdash;even if it contains a &lt;code&gt;main&lt;/code&gt; procedure somewhere.
+Note: If you specify &lt;code&gt;main-script&lt;/code&gt;, you're module won't run directly any SASIL code&amp;mdash;even if it contains a &lt;code&gt;main&lt;/code&gt; procedure somewhere.  Furthermore, the &lt;code&gt;main-script&lt;/code&gt; and &lt;code&gt;main-type&lt;/code&gt; attributes are mutually exclusive.  Use one other the other&amp;mdash;not both
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sun, 23 Feb 2014 22:35:02 -0000</pubDate><guid>https://sourceforge.net2244879119ef3df75978ea3c1aea27f5694cc4bb</guid></item><item><title>Modules modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Modules/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v5
+++ v6
@@ -12,7 +12,7 @@

 Element | Parent | Valid children | Valid attributes | Details
 --------|--------|----------------|------------------|--------
-&lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | N/A | &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;final&lt;/code&gt; (optional), &lt;code&gt;version&lt;/code&gt; | Root element!  The &lt;code&gt;name&lt;/code&gt; attribute should be the full name of the module, but without the filename extension.  The &lt;code&gt;final&lt;/code&gt; attribute, if present, prevents other modules from deriving from this module.  The &lt;code&gt;version&lt;/code&gt; attribute lists the version number of this module.  It will be compared with the &lt;code&gt;min-version&lt;/code&gt; and &lt;code&gt;max-version&lt;/code&gt; attributes of any modules that declare a dependency on this module with the &lt;code&gt;&amp;lt;depends-on&amp;gt;&lt;/code&gt; element.
+&lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | N/A | &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;final&lt;/code&gt; (optional), &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;main-script&lt;/code&gt; ([DASIL](Derivatives-DASIL) only) | Root element!  The &lt;code&gt;name&lt;/code&gt; attribute should be the full name of the module, but without the filename extension.  The &lt;code&gt;final&lt;/code&gt; attribute, if present, prevents other modules from deriving from this module.  The &lt;code&gt;version&lt;/code&gt; attribute lists the version number of this module.  It will be compared with the &lt;code&gt;min-version&lt;/code&gt; and &lt;code&gt;max-version&lt;/code&gt; attributes of any modules that declare a dependency on this module with the &lt;code&gt;&amp;lt;depends-on&amp;gt;&lt;/code&gt; element.  The &lt;code&gt;main-script&lt;/code&gt; attribute is required if you expect to run this module as a [DASIL](Derivatives-DASIL) script.
 &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt; | Specifies the module that this module is based on.  The &lt;code&gt;name&lt;/code&gt; attribute should be the name given in its module declaration file.  List each module you need to derive from with its own &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; entry.
 &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;no-child-namespaces&lt;/code&gt; (optional) | Specifies a namespace that will be part of this module.  Use the &lt;code&gt;name&lt;/code&gt; attribute to specify the fully qualified name of the namespace you want to include.  Including a namespace includes **everything** inside it.  If you need to break a namespace up into several modules, list the namespaces inside it, not the parent namespace!  If there are no child namespaces, you may need to break the namespace up.  Use of the optional &lt;code&gt;no-child-namespaces&lt;/code&gt; attribute causes the compiler to include the types declared directly inside the specified namespace and nothing from that namespace's child namespaces.
 &lt;code&gt;&amp;lt;depends-on&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;min-version&lt;/code&gt;, &lt;code&gt;max-version&lt;/code&gt; | Lists the name of a module that his module depends on.  The &lt;code&gt;name&lt;/code&gt; attribute should match the name given for the module you're declaring a dependency on.  The &lt;code&gt;min-version&lt;/code&gt; and &lt;code&gt;max-version&lt;/code&gt; attributes will be compared with the &lt;code&gt;version&lt;/code&gt; given in the copy of the module that was found.
@@ -26,3 +26,9 @@
 The module registration system
 ------------------------------
 We need to avoid the situation where either a user or code is forced to find a module (or its source code) with Google, Yahoo, Bing, etc.  Rather, it's hoped that a portion of this site will be dedicated to listing known trusted modules and a way to download them and/or their source code.  The actual module won't be stored on the site; just the URL where it can be downloaded from.
+
+Modules and [DASIL](Derivatives-DASIL)
+--------------------------------------
+If you're module will contain only [DASIL](Derivatives-DASIL) scripts, the tool that creates the module could be able to make the module as only a compressed package of obfuscated scripts files.  When you make a module containing [DASIL](Derivatives-DASIL) scripts and you want to make the module executable such that it runs one of the scripts, you need to specify the &lt;code&gt;main-script&lt;/code&gt; attribute on the &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; element.  It must be in the format "&lt;code&gt;namespace@identifier&lt;/code&gt;".  The "&lt;code&gt;namespace&lt;/code&gt;" part must be a namespace included in this module (not a base namespace or module).  The "&lt;code&gt;identifier&lt;/code&gt;" part must be the ASIL identifier you listed in the namespace for the script you want to run when the module is executed.  The script must be declared as public by the namespace.
+
+Note: If you specify &lt;code&gt;main-script&lt;/code&gt;, you're module won't run directly any SASIL code&amp;mdash;even if it contains a &lt;code&gt;main&lt;/code&gt; procedure somewhere.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sun, 23 Feb 2014 22:25:23 -0000</pubDate><guid>https://sourceforge.net1b8e5cb6c976f6c18ac5a99f86e8aa2e0f88594d</guid></item><item><title>Modules modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Modules/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v4
+++ v5
@@ -4,7 +4,7 @@
 --------
 Those of you that remember Turbo Pascal may remember that it had a module system that let you expose functionality to other modules.  These days, .NET executables and Java JARs have something similar.  Essentially, a module was a fully compiled library with an internal semi-compiled list of publicly declared types.  That's what an ASIL module is.

-Like with ASIL namespaces, a module is declared with either a module XML file or an XML element inside your makefile.  If you pick a separate file, use the name as your executable or library, only with the extension ".asil-module".  Also like namespaces in ASIL, modules can derive from one another.
+Like with ASIL namespaces, a module is declared with either a module XML file or an XML element inside your makefile.  If you pick a separate file, use the same name as your executable or library, only with the extension ".asil-module".  Also like namespaces in ASIL, modules can derive from one another.

 Valid elements
 --------------
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Sun, 16 Feb 2014 09:02:17 -0000</pubDate><guid>https://sourceforge.netca66aa6af70af1bc24a3d0e58e9ce2db433037df</guid></item><item><title>Modules modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Modules/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v3
+++ v4
@@ -25,4 +25,4 @@

 The module registration system
 ------------------------------
-We need to avoid the situation where either a user or code is forced to find a module (or its source code) with Google, Yahoo, Bing, etc.  Rather, it's hoped that a portion of this site will be dedicated to listing known trusted modules and a way to download them and/or their source code.
+We need to avoid the situation where either a user or code is forced to find a module (or its source code) with Google, Yahoo, Bing, etc.  Rather, it's hoped that a portion of this site will be dedicated to listing known trusted modules and a way to download them and/or their source code.  The actual module won't be stored on the site; just the URL where it can be downloaded from.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Tue, 11 Feb 2014 11:38:30 -0000</pubDate><guid>https://sourceforge.netb319a16f14075dba74d4c86a2dda0db1ebaa15df</guid></item><item><title>Modules modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Modules/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -12,10 +12,17 @@

 Element | Parent | Valid children | Valid attributes | Details
 --------|--------|----------------|------------------|--------
-&lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | N/A | &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;final&lt;/code&gt; (optional) | Root element!  The &lt;code&gt;name&lt;/code&gt; attribute should be the full name of the module, but without the filename extension.
+&lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | N/A | &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;final&lt;/code&gt; (optional), &lt;code&gt;version&lt;/code&gt; | Root element!  The &lt;code&gt;name&lt;/code&gt; attribute should be the full name of the module, but without the filename extension.  The &lt;code&gt;final&lt;/code&gt; attribute, if present, prevents other modules from deriving from this module.  The &lt;code&gt;version&lt;/code&gt; attribute lists the version number of this module.  It will be compared with the &lt;code&gt;min-version&lt;/code&gt; and &lt;code&gt;max-version&lt;/code&gt; attributes of any modules that declare a dependency on this module with the &lt;code&gt;&amp;lt;depends-on&amp;gt;&lt;/code&gt; element.
 &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt; | Specifies the module that this module is based on.  The &lt;code&gt;name&lt;/code&gt; attribute should be the name given in its module declaration file.  List each module you need to derive from with its own &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; entry.
 &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;no-child-namespaces&lt;/code&gt; (optional) | Specifies a namespace that will be part of this module.  Use the &lt;code&gt;name&lt;/code&gt; attribute to specify the fully qualified name of the namespace you want to include.  Including a namespace includes **everything** inside it.  If you need to break a namespace up into several modules, list the namespaces inside it, not the parent namespace!  If there are no child namespaces, you may need to break the namespace up.  Use of the optional &lt;code&gt;no-child-namespaces&lt;/code&gt; attribute causes the compiler to include the types declared directly inside the specified namespace and nothing from that namespace's child namespaces.
+&lt;code&gt;&amp;lt;depends-on&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;min-version&lt;/code&gt;, &lt;code&gt;max-version&lt;/code&gt; | Lists the name of a module that his module depends on.  The &lt;code&gt;name&lt;/code&gt; attribute should match the name given for the module you're declaring a dependency on.  The &lt;code&gt;min-version&lt;/code&gt; and &lt;code&gt;max-version&lt;/code&gt; attributes will be compared with the &lt;code&gt;version&lt;/code&gt; given in the copy of the module that was found.
+
+Note: All version attributes, if not the entire declaration file, should be present inside the module's executable or binary file.

 Deriving from modules in other projects
 ---------------------------------------
 Like with namespaces, it's considered poor form to derive from a module in another project.
+
+The module registration system
+------------------------------
+We need to avoid the situation where either a user or code is forced to find a module (or its source code) with Google, Yahoo, Bing, etc.  Rather, it's hoped that a portion of this site will be dedicated to listing known trusted modules and a way to download them and/or their source code.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Tue, 11 Feb 2014 11:36:04 -0000</pubDate><guid>https://sourceforge.net42b1ca33e9b1f856c1a954399ff6cd698838c481</guid></item><item><title>Modules modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Modules/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -15,3 +15,7 @@
 &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | N/A | &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;final&lt;/code&gt; (optional) | Root element!  The &lt;code&gt;name&lt;/code&gt; attribute should be the full name of the module, but without the filename extension.
 &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt; | Specifies the module that this module is based on.  The &lt;code&gt;name&lt;/code&gt; attribute should be the name given in its module declaration file.  List each module you need to derive from with its own &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; entry.
 &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt; | &lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt; | none | &lt;code&gt;name&lt;/code&gt;, &lt;code&gt;no-child-namespaces&lt;/code&gt; (optional) | Specifies a namespace that will be part of this module.  Use the &lt;code&gt;name&lt;/code&gt; attribute to specify the fully qualified name of the namespace you want to include.  Including a namespace includes **everything** inside it.  If you need to break a namespace up into several modules, list the namespaces inside it, not the parent namespace!  If there are no child namespaces, you may need to break the namespace up.  Use of the optional &lt;code&gt;no-child-namespaces&lt;/code&gt; attribute causes the compiler to include the types declared directly inside the specified namespace and nothing from that namespace's child namespaces.
+
+Deriving from modules in other projects
+---------------------------------------
+Like with namespaces, it's considered poor form to derive from a module in another project.
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Tue, 11 Feb 2014 11:14:19 -0000</pubDate><guid>https://sourceforge.net1f4aec7d8b8b95646886d0579d36aabbe78041e3</guid></item><item><title>Modules modified by Will Pittenger</title><link>https://sourceforge.net/p/asil/wiki/Modules/</link><description>&lt;div class="markdown_content"&gt;&lt;div class="toc"&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="#overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#valid-elements"&gt;Valid elements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;h2 id="overview"&gt;Overview&lt;/h2&gt;
&lt;p&gt;Those of you that remember Turbo Pascal may remember that it had a module system that let you expose functionality to other modules.  These days, .NET executables and Java JARs have something similar.  Essentially, a module was a fully compiled library with an internal semi-compiled list of publicly declared types.  That's what an ASIL module is.&lt;/p&gt;
&lt;p&gt;Like with ASIL namespaces, a module is declared with either a module XML file or an XML element inside your makefile.  If you pick a separate file, use the name as your executable or library, only with the extension ".asil-module".  Also like namespaces in ASIL, modules can derive from one another.&lt;/p&gt;
&lt;h2 id="valid-elements"&gt;Valid elements&lt;/h2&gt;
&lt;p&gt;The table below lists the valid elements inside a module file.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Element&lt;/th&gt;
&lt;th&gt;Parent&lt;/th&gt;
&lt;th&gt;Valid children&lt;/th&gt;
&lt;th&gt;Valid attributes&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;final&lt;/code&gt; (optional)&lt;/td&gt;
&lt;td&gt;Root element!  The &lt;code&gt;name&lt;/code&gt; attribute should be the full name of the module, but without the filename extension.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Specifies the module that this module is based on.  The &lt;code&gt;name&lt;/code&gt; attribute should be the name given in its module declaration file.  List each module you need to derive from with its own &lt;code&gt;&amp;lt;base&amp;gt;&lt;/code&gt; entry.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;namespace&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;&amp;lt;module&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;none&lt;/td&gt;
&lt;td&gt;&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;no-child-namespaces&lt;/code&gt; (optional)&lt;/td&gt;
&lt;td&gt;Specifies a namespace that will be part of this module.  Use the &lt;code&gt;name&lt;/code&gt; attribute to specify the fully qualified name of the namespace you want to include.  Including a namespace includes &lt;strong&gt;everything&lt;/strong&gt; inside it.  If you need to break a namespace up into several modules, list the namespaces inside it, not the parent namespace!  If there are no child namespaces, you may need to break the namespace up.  Use of the optional &lt;code&gt;no-child-namespaces&lt;/code&gt; attribute causes the compiler to include the types declared directly inside the specified namespace and nothing from that namespace's child namespaces.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Will Pittenger</dc:creator><pubDate>Tue, 11 Feb 2014 11:10:53 -0000</pubDate><guid>https://sourceforge.net413af447022afad57ff2e9f1ea9a8ea47b774bbc</guid></item></channel></rss>