1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-17 07:40:47 +03:00

Rearranged names of some linking tasks

This commit is contained in:
Graham Nelson 2021-11-22 23:40:18 +00:00
parent 9729d14244
commit ff06397486
29 changed files with 419 additions and 331 deletions

View file

@ -118,8 +118,7 @@ are ever made.
<span class="plain-syntax"> </span><a href="2-arc.html#SP2" class="function-link"><span class="function-syntax">Architectures::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"32d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Canonical filenames. </b>When a kit is assimilated, its Inter code is stored in files with these
leafnames:
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Canonical filenames. </b>When a kit is built, its Inter code is stored in files with these leafnames:
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -104,7 +104,7 @@ opcodes.
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Inter is for the most part fully specified and cross-platform, but assembly
language is the big hole in that. It is legal for Inter code to contain almost
anything which purports to be assembly language. For example, the following
code will successfully assimilate as part of an Inter kit:
code will successfully build as part of an Inter kit:
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -222,7 +222,7 @@ utility functions in the <a href="../supervisor-module/index.html" class="intern
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax"> = </span><a href="../supervisor-module/5-ps2.html#SP4" class="function-link"><span class="function-syntax">Projects::materials_nest</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">destination_nest</span><span class="plain-syntax"> = </span><a href="../supervisor-module/5-ps2.html#SP5" class="function-link"><span class="function-syntax">Projects::materials_nest</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP7" class="function-link"><span class="function-syntax">Errors::with_text</span></a><span class="plain-syntax">(</span><span class="string-syntax">"no -project in use, so ignoring -archive"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>

View file

@ -356,8 +356,8 @@ file, including everything needed to use the things needed to build it, and
so on; and then will build Example itself. As with the Unix utility <span class="extract"><span class="ConsoleText-extract-syntax">make</span></span>,
this is an incremental process, and looks at the timestamps of files to see
which steps are needed and which are not. If all the kits needed by Example
are up to date, then the kits will not be re-assimilated, and so on. If the
same project is built twice in a row, and nothing about it has changed since
are up to date, then the kits will not be rebuilt, and so on. If the same
project is built twice in a row, and nothing about it has changed since
the first time, the second <span class="extract"><span class="ConsoleText-extract-syntax">-build</span></span> does nothing.
</p>

View file

@ -81,7 +81,7 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">path_to_inter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">domain_path</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inter_file_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">filename</span></span>
<span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">output_textually</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -105,9 +105,9 @@ function togglePopup(material_id) {
programs.
</p>
<p class="commentary">Inter can do three different things: assimilate a kit, run a pipeline of
<p class="commentary">Inter can do three different things: build a kit, run a pipeline of
code generation stages, and verify/transcode files of Inter code. In fact,
though, that's really only two different things, because assimilation is
though, that's really only two different things, because kit-building is
also done with a pipeline.
</p>
@ -116,7 +116,7 @@ also done with a pipeline.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Start up the modules</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Begin with an empty file list and variables dictionary</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_7" class="named-paragraph-link"><span class="named-paragraph">Read the command line</span><span class="named-paragraph-number">2.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Set up a pipeline for assimilation</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Set up a pipeline for kit-building</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP2_4" class="named-paragraph-link"><span class="named-paragraph">Run the pipeline</span><span class="named-paragraph-number">2.4</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
@ -154,7 +154,7 @@ is used. But at times in the past it has been useful to debug with the text
form, which would be written to <span class="extract"><span class="extract-syntax">*outt</span></span>.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set up a pipeline for assimilation</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set up a pipeline for kit-building</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -162,15 +162,15 @@ form, which would be written to <span class="extract"><span class="extract-synta
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"no -architecture given"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">path_to_pipelines</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_inter</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Pipelines"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-fln.html#SP2" class="function-link"><span class="function-syntax">Filenames::in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_pipelines</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"assimilate.interpipeline"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-fln.html#SP2" class="function-link"><span class="function-syntax">Filenames::in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_pipelines</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"build-kit.interpipeline"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP1" class="function-link"><span class="function-syntax">Main::add_pipeline_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"*kit"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP7" class="function-link"><span class="function-syntax">Pathnames::directory_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP7" class="function-link"><span class="function-syntax">Pathnames::directory_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP1" class="function-link"><span class="function-syntax">Main::add_pipeline_variable_from_filename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"*out"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../arch-module/2-arc.html#SP4" class="function-link"><span class="function-syntax">Architectures::canonical_binary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="../arch-module/2-arc.html#SP4" class="function-link"><span class="function-syntax">Architectures::canonical_binary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="1-mn.html#SP1" class="function-link"><span class="function-syntax">Main::add_pipeline_variable_from_filename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"*outt"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../arch-module/2-arc.html#SP4" class="function-link"><span class="function-syntax">Architectures::canonical_textual</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="../arch-module/2-arc.html#SP4" class="function-link"><span class="function-syntax">Architectures::canonical_textual</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_4" class="paragraph-anchor"></a><b>&#167;2.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Run the pipeline</span><span class="named-paragraph-number">2.4</span></span><span class="comment-syntax"> =</span>
@ -182,7 +182,7 @@ form, which would be written to <span class="extract"><span class="extract-synta
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">pipeline_as_text</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"-pipeline-text and -pipeline-file are mutually exclusive"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">pathname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax">) </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax">, </span><span class="reserved-syntax">pathname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">) </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax">, </span><span class="reserved-syntax">pathname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SS</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SS</span><span class="plain-syntax"> = </span><a href="../pipeline-module/2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::from_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
@ -239,7 +239,7 @@ form, which would be written to <span class="extract"><span class="extract-synta
<span class="definition-keyword">enum</span> <span class="constant-syntax">PIPELINE_VARIABLE_CLSW</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">DOMAIN_CLSW</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">ARCHITECTURE_CLSW</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">ASSIMILATE_CLSW</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">BUILD_KIT_CLSW</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">INTERNAL_CLSW</span>
</pre>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Read the command line</span><span class="named-paragraph-number">2.7</span></span><span class="comment-syntax"> =</span>
@ -266,8 +266,8 @@ form, which would be written to <span class="extract"><span class="extract-synta
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"specify folder of internal Inform resources"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ARCHITECTURE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"architecture"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"generate Inter with architecture X"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ASSIMILATE_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"assimilate"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"assimilate (i.e., build) Inter kit X for the current architecture"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILD_KIT_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"build-kit"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"build Inter kit X for the current architecture"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../../../inweb/docs/foundation-module/3-cla.html#SP8" class="function-link"><span class="function-syntax">CommandLine::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP3" class="function-link"><span class="function-syntax">Main::respond</span></a><span class="plain-syntax">, &amp;</span><a href="1-mn.html#SP4" class="function-link"><span class="function-syntax">Main::add_file</span></a><span class="plain-syntax">);</span>
@ -285,7 +285,7 @@ form, which would be written to <span class="extract"><span class="extract-synta
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_FILE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_VARIABLE_CLSW:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-mn.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Add a pipeline variable to the dictionary</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DOMAIN_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">domain_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ASSIMILATE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">kit_to_assimilate</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BUILD_KIT_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">kit_to_build</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INTERNAL_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/docs/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ARCHITECTURE_CLSW:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../pipeline-module/1-pm.html#SP4" class="function-link"><span class="function-syntax">PipelineModule::set_architecture</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">) == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">)</span>

View file

@ -169,22 +169,22 @@ and therefore assimilation is really a cross-compilation from I6 to Inter.
<p class="commentary">Kits are like so-called "fat binaries", in that they contain binary Inter
for each different architecture with which they are compatible. Inter can
assimilate for only one architecture at a time, so a command must specify
build kits for only one architecture at a time, so a command must specify
which is wanted. For example:
</p>
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inter/Tangled/inter</span><span class="ConsoleText-identifier-syntax"> -architecture</span><span class="ConsoleText-plain-syntax"> 16</span><span class="ConsoleText-identifier-syntax"> -assimilate</span><span class="ConsoleText-plain-syntax"> K</span>
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inter/Tangled/inter</span><span class="ConsoleText-identifier-syntax"> -architecture</span><span class="ConsoleText-plain-syntax"> 32d</span><span class="ConsoleText-identifier-syntax"> -assimilate</span><span class="ConsoleText-plain-syntax"> K</span>
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inter/Tangled/inter</span><span class="ConsoleText-identifier-syntax"> -architecture</span><span class="ConsoleText-plain-syntax"> 16</span><span class="ConsoleText-identifier-syntax"> -build-kit</span><span class="ConsoleText-plain-syntax"> K</span>
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inter/Tangled/inter</span><span class="ConsoleText-identifier-syntax"> -architecture</span><span class="ConsoleText-plain-syntax"> 32d</span><span class="ConsoleText-identifier-syntax"> -build-kit</span><span class="ConsoleText-plain-syntax"> K</span>
</pre>
<p class="commentary">Incrementally assimilating kits as needed could be done with something like
<p class="commentary">Incrementally building kits as needed could be done with something like
the Unix tool <span class="extract"><span class="ConsoleText-extract-syntax">make</span></span>, but in fact Inbuild has this ability: the command
</p>
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inbuild/Tangled/inbuild</span><span class="ConsoleText-identifier-syntax"> -build</span><span class="ConsoleText-plain-syntax"> K</span>
</pre>
<p class="commentary">looks at the kit, works out which architectures need re-assimilation, and
<p class="commentary">looks at the kit, works out which architectures need rebuilding, and
then issues commands like the above to instruct <span class="extract"><span class="ConsoleText-extract-syntax">inter</span></span> to do so. Indeed,
multiple kits can be managed with a single command:
</p>

View file

@ -88,6 +88,7 @@ pointers to trees being worked on.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_ephemera</span><span class="plain-syntax"> </span><span class="identifier-syntax">ephemera</span><span class="plain-syntax">; </span><span class="comment-syntax"> temporary storage when running</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">; </span><span class="comment-syntax"> used when parsing only</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">local</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">run_depth</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax">;</span>
@ -98,6 +99,7 @@ pointers to trees being worked on.
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">erroneous</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">search_list</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">local</span><span class="plain-syntax"> = </span><span class="identifier-syntax">local</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">run_depth</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-rp.html#SP1" class="function-link"><span class="function-syntax">RunningPipelines::clean_pipeline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -238,9 +240,12 @@ divided by commas.
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>Instructions are mostly steps, but...
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>Instructions are mostly steps, but:
</p>
<ul class="items"><li>(a) A line beginning with an <span class="extract"><span class="extract-syntax">!</span></span> is a comment,
</li><li>(b) <span class="extract"><span class="extract-syntax">run pipeline X</span></span> means to incorporate pipeline <span class="extract"><span class="extract-syntax">X</span></span> here.
</li></ul>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingPipelines::parse_instruction</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ParsingPipelines::parse_instruction</span></span>:<br/><a href="2-pp.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inter_pipeline</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">) {</span>
@ -248,19 +253,30 @@ divided by commas.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"!%c*"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> ;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"run pipeline (%c*)"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">SUPERVISOR_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSkill::filename_of_pipeline</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">search_list</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">SUPERVISOR_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">local</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSkill::filename_of_pipeline</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">search_list</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leafname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">, </span><span class="string-syntax">"%S.interpipeline"</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">local</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-pe.html#SP1" class="function-link"><span class="function-syntax">PipelineErrors::syntax_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"unable to find the pipeline '%S'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">erroneous</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TextFiles::read</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"can't open inter pipeline file"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><a href="2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::scan_line</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">run_depth</span><span class="plain-syntax">++ &gt; </span><span class="constant-syntax">100</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-pe.html#SP1" class="function-link"><span class="function-syntax">PipelineErrors::syntax_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"pipeline seems to have become circular: '%S'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">erroneous</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TextFiles::read</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"can't open inter pipeline file"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><a href="2-pp.html#SP5" class="function-link"><span class="function-syntax">ParsingPipelines::scan_line</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">run_depth</span><span class="plain-syntax">--;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ST</span><span class="plain-syntax"> = </span><a href="2-pp.html#SP8" class="function-link"><span class="function-syntax">ParsingPipelines::parse_step</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ST</span><span class="plain-syntax">) </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">ST</span><span class="plain-syntax">, </span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax">, </span><span class="identifier-syntax">pipeline</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">steps</span><span class="plain-syntax">);</span>

View file

@ -79,11 +79,11 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingStages::create_pipeline_stage</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ParsingStages::create_pipeline_stage</span></span>:<br/>Parsing Pipelines - <a href="2-pp.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"parse-kit"</span><span class="plain-syntax">, </span><a href="3-ps.html#SP1" class="function-link"><span class="function-syntax">ParsingStages::run_parse_kit</span></a><span class="plain-syntax">, </span><span class="constant-syntax">TEMPLATE_FILE_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"load-kit-source"</span><span class="plain-syntax">, </span><a href="3-ps.html#SP1" class="function-link"><span class="function-syntax">ParsingStages::run_load_kit_source</span></a><span class="plain-syntax">, </span><span class="constant-syntax">TEMPLATE_FILE_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-pp.html#SP3" class="function-link"><span class="function-syntax">ParsingPipelines::new_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"parse-insertions"</span><span class="plain-syntax">, </span><a href="3-ps.html#SP1" class="function-link"><span class="function-syntax">ParsingStages::run_parse_insertions</span></a><span class="plain-syntax">, </span><span class="constant-syntax">NO_STAGE_ARG</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingStages::run_parse_kit</span><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ParsingStages::run_load_kit_source</span><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_package</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Site::main_package_if_it_exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ephemera</span><span class="plain-syntax">.</span><span class="element-syntax">repository</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">main_package</span><span class="plain-syntax">) {</span>

View file

@ -71,7 +71,7 @@ function togglePopup(material_id) {
<!--Weave of 'Inter Skill' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inbuild Modules</a></li><li><a href="index.html">supervisor</a></li><li><a href="index.html#3">Chapter 3: Incremental Builds</a></li><li><b>Inter Skill</b></li></ul></div>
<p class="purpose">The skills of kit assimilation and of code generation from Inter.</p>
<p class="purpose">The skills of kit building and of code generation from Inter.</p>
<ul class="toc"><li><a href="3-is.html#SP1">&#167;1. Creation</a></li><li><a href="3-is.html#SP2">&#167;2. Assimilation</a></li><li><a href="3-is.html#SP4">&#167;4. Code generation</a></li></ul><hr class="tocbar">
@ -81,16 +81,16 @@ is being held in memory by <span class="extract"><span class="extract-syntax">in
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">build_skill</span><span class="plain-syntax"> *</span><span class="identifier-syntax">assimilate_using_inter_skill</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">build_skill</span><span class="plain-syntax"> *</span><span class="identifier-syntax">build_kit_using_inter_skill</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">build_skill</span><span class="plain-syntax"> *</span><span class="identifier-syntax">code_generate_using_inter_skill</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterSkill::create</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">InterSkill::create</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">assimilate_using_inter_skill</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="3-bs2.html#SP1" class="function-link"><span class="function-syntax">BuildSteps::new_skill</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"assimilate using inter"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">assimilate_using_inter_skill</span><span class="plain-syntax">, </span><span class="constant-syntax">BUILD_SKILL_COMMAND_MTID</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="3-is.html#SP2" class="function-link"><span class="function-syntax">InterSkill::assimilate_via_shell</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">assimilate_using_inter_skill</span><span class="plain-syntax">, </span><span class="constant-syntax">BUILD_SKILL_INTERNAL_MTID</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="3-is.html#SP3" class="function-link"><span class="function-syntax">InterSkill::assimilate_internally</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">build_kit_using_inter_skill</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="3-bs2.html#SP1" class="function-link"><span class="function-syntax">BuildSteps::new_skill</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"build kit using inter"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">build_kit_using_inter_skill</span><span class="plain-syntax">, </span><span class="constant-syntax">BUILD_SKILL_COMMAND_MTID</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="3-is.html#SP2" class="function-link"><span class="function-syntax">InterSkill::build_kit_via_shell</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">build_kit_using_inter_skill</span><span class="plain-syntax">, </span><span class="constant-syntax">BUILD_SKILL_INTERNAL_MTID</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="3-is.html#SP3" class="function-link"><span class="function-syntax">InterSkill::build_kit_internally</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">code_generate_using_inter_skill</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="3-bs2.html#SP1" class="function-link"><span class="function-syntax">BuildSteps::new_skill</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"code generate using inter"</span><span class="plain-syntax">);</span>
@ -101,28 +101,28 @@ is being held in memory by <span class="extract"><span class="extract-syntax">in
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Assimilation. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterSkill::assimilate_via_shell</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">InterSkill::assimilate_via_shell</span></span>:<br/><a href="3-is.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">build_skill</span><span class="plain-syntax"> *</span><span class="identifier-syntax">skill</span><span class="plain-syntax">, </span><span class="reserved-syntax">build_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterSkill::build_kit_via_shell</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">InterSkill::build_kit_via_shell</span></span>:<br/><a href="3-is.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">build_skill</span><span class="plain-syntax"> *</span><span class="identifier-syntax">skill</span><span class="plain-syntax">, </span><span class="reserved-syntax">build_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="reserved-syntax">build_methodology</span><span class="plain-syntax"> *</span><span class="identifier-syntax">BM</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">for_arch</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no architecture given"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit_path</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">associated_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">location_if_path</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Shell::quote_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="identifier-syntax">BM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">to_inter</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-architecture %S "</span><span class="plain-syntax">, </span><span class="identifier-syntax">Architectures::to_codename</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-assimilate "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-build-kit "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Shell::quote_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit_path</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>Something to watch out for here is that, when running internally as part of
<span class="extract"><span class="extract-syntax">inform7</span></span>, we use the copy of the <span class="extract"><span class="extract-syntax">assimilate</span></span> pipeline inside the installation
of <span class="extract"><span class="extract-syntax">inform7</span></span> (it will be in the internal nest). When we perform assimilation
from the command line using the <span class="extract"><span class="extract-syntax">inter</span></span> tool, we use the <span class="extract"><span class="extract-syntax">assimilate</span></span> pipeline
supplied in the <span class="extract"><span class="extract-syntax">inter</span></span> installation. But those two files are in fact the same,
or should be, so the effect is the same.
<span class="extract"><span class="extract-syntax">inform7</span></span>, we use the copy of the <span class="extract"><span class="extract-syntax">build-kit</span></span> pipeline inside the installation
of <span class="extract"><span class="extract-syntax">inform7</span></span> (it will be in the internal nest). When we build kits from the
command line using the <span class="extract"><span class="extract-syntax">inter</span></span> tool, we use the <span class="extract"><span class="extract-syntax">build-kit</span></span> pipeline supplied
in the <span class="extract"><span class="extract-syntax">inter</span></span> installation. But those two files are in fact the same, or
should be, so the effect is the same.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterSkill::assimilate_internally</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">InterSkill::assimilate_internally</span></span>:<br/><a href="3-is.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">build_skill</span><span class="plain-syntax"> *</span><span class="identifier-syntax">skill</span><span class="plain-syntax">, </span><span class="reserved-syntax">build_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InterSkill::build_kit_internally</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">InterSkill::build_kit_internally</span></span>:<br/><a href="3-is.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">build_skill</span><span class="plain-syntax"> *</span><span class="identifier-syntax">skill</span><span class="plain-syntax">, </span><span class="reserved-syntax">build_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">build_methodology</span><span class="plain-syntax"> *</span><span class="identifier-syntax">BM</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_architecture</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">for_arch</span><span class="plain-syntax">;</span>
@ -130,9 +130,10 @@ or should be, so the effect is the same.
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit_path</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">associated_copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">location_if_path</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline_vars</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ParsingPipelines::basic_dictionary</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> = </span><a href="3-is.html#SP3" class="function-link"><span class="function-syntax">InterSkill::filename_of_pipeline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"assimilate"</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="3-is.html#SP3" class="function-link"><span class="function-syntax">InterSkill::filename_of_pipeline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"build-kit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pipeline_as_file</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Errors::nowhere</span><span class="plain-syntax">(</span><span class="string-syntax">"assimilate pipeline could not be found"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Errors::nowhere</span><span class="plain-syntax">(</span><span class="string-syntax">"build-kit pipeline could not be found"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
@ -157,7 +158,7 @@ or should be, so the effect is the same.
<span class="plain-syntax"> </span><span class="identifier-syntax">RunningPipelines::run</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">SS</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_paths</span><span class="plain-syntax">, </span><span class="identifier-syntax">requirements_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">for_vm</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Errors::nowhere</span><span class="plain-syntax">(</span><span class="string-syntax">"assimilate pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Errors::nowhere</span><span class="plain-syntax">(</span><span class="string-syntax">"build-kit pipeline could not be parsed"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>

View file

@ -529,7 +529,7 @@ not ours.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_architecture</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax"> *</span><span class="identifier-syntax">BV</span><span class="plain-syntax"> = </span><a href="3-bg.html#SP2" class="function-link"><span class="function-syntax">Graphs::file_vertex</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Architectures::canonical_binary</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="3-bg.html#SP4" class="function-link"><span class="function-syntax">Graphs::need_this_to_build</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">KV</span><span class="plain-syntax">, </span><span class="identifier-syntax">BV</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-bs2.html#SP4" class="function-link"><span class="function-syntax">BuildSteps::attach</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">BV</span><span class="plain-syntax">, </span><span class="identifier-syntax">assimilate_using_inter_skill</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-bs2.html#SP4" class="function-link"><span class="function-syntax">BuildSteps::attach</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">BV</span><span class="plain-syntax">, </span><span class="identifier-syntax">build_kit_using_inter_skill</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">BV</span><span class="plain-syntax">, </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax">, </span><span class="identifier-syntax">BVL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>

View file

@ -163,7 +163,7 @@
<li>
<p class="sectionentry"><a href="3-is.html">
<spon class="sectiontitle">Inter Skill</span></a> -
<span class="sectionpurpose">The skills of kit assimilation and of code generation from Inter.</span></p>
<span class="sectionpurpose">The skills of kit building and of code generation from Inter.</span></p>
</li>
<li>
<p class="sectionentry"><a href="3-is2.html">

View file

@ -242,8 +242,8 @@ file, including everything needed to use the things needed to build it, and
so on; and then will build Example itself. As with the Unix utility |make|,
this is an incremental process, and looks at the timestamps of files to see
which steps are needed and which are not. If all the kits needed by Example
are up to date, then the kits will not be re-assimilated, and so on. If the
same project is built twice in a row, and nothing about it has changed since
are up to date, then the kits will not be rebuilt, and so on. If the same
project is built twice in a row, and nothing about it has changed since
the first time, the second |-build| does nothing.
Inbuild uses the graph to work out what needs to be done, and then issues

View file

@ -1,6 +1,6 @@
[InterSkill::] Inter Skill.
The skills of kit assimilation and of code generation from Inter.
The skills of kit building and of code generation from Inter.
@h Creation.
Note that code generation can only be done internally, and only in fact within
@ -8,16 +8,16 @@ the |inform7| compiler: this is because the Inter code which it generates from
is being held in memory by |inform7|.
=
build_skill *assimilate_using_inter_skill = NULL;
build_skill *build_kit_using_inter_skill = NULL;
build_skill *code_generate_using_inter_skill = NULL;
void InterSkill::create(void) {
assimilate_using_inter_skill =
BuildSteps::new_skill(I"assimilate using inter");
METHOD_ADD(assimilate_using_inter_skill, BUILD_SKILL_COMMAND_MTID,
InterSkill::assimilate_via_shell);
METHOD_ADD(assimilate_using_inter_skill, BUILD_SKILL_INTERNAL_MTID,
InterSkill::assimilate_internally);
build_kit_using_inter_skill =
BuildSteps::new_skill(I"build kit using inter");
METHOD_ADD(build_kit_using_inter_skill, BUILD_SKILL_COMMAND_MTID,
InterSkill::build_kit_via_shell);
METHOD_ADD(build_kit_using_inter_skill, BUILD_SKILL_INTERNAL_MTID,
InterSkill::build_kit_internally);
code_generate_using_inter_skill =
BuildSteps::new_skill(I"code generate using inter");
@ -28,27 +28,27 @@ void InterSkill::create(void) {
@h Assimilation.
=
int InterSkill::assimilate_via_shell(build_skill *skill, build_step *S,
int InterSkill::build_kit_via_shell(build_skill *skill, build_step *S,
text_stream *command, build_methodology *BM, linked_list *search_list) {
inter_architecture *A = S->for_arch;
if (A == NULL) internal_error("no architecture given");
pathname *kit_path = S->associated_copy->location_if_path;
Shell::quote_file(command, BM->to_inter);
WRITE_TO(command, "-architecture %S ", Architectures::to_codename(A));
WRITE_TO(command, "-assimilate ");
WRITE_TO(command, "-build-kit ");
Shell::quote_path(command, kit_path);
return TRUE;
}
@ Something to watch out for here is that, when running internally as part of
|inform7|, we use the copy of the |assimilate| pipeline inside the installation
of |inform7| (it will be in the internal nest). When we perform assimilation
from the command line using the |inter| tool, we use the |assimilate| pipeline
supplied in the |inter| installation. But those two files are in fact the same,
or should be, so the effect is the same.
|inform7|, we use the copy of the |build-kit| pipeline inside the installation
of |inform7| (it will be in the internal nest). When we build kits from the
command line using the |inter| tool, we use the |build-kit| pipeline supplied
in the |inter| installation. But those two files are in fact the same, or
should be, so the effect is the same.
=
int InterSkill::assimilate_internally(build_skill *skill, build_step *S,
int InterSkill::build_kit_internally(build_skill *skill, build_step *S,
build_methodology *BM, linked_list *search_list) {
#ifdef PIPELINE_MODULE
inter_architecture *A = S->for_arch;
@ -56,9 +56,10 @@ int InterSkill::assimilate_internally(build_skill *skill, build_step *S,
pathname *kit_path = S->associated_copy->location_if_path;
dictionary *pipeline_vars = ParsingPipelines::basic_dictionary(NULL);
filename *pipeline_as_file = InterSkill::filename_of_pipeline(I"assimilate", search_list);
filename *pipeline_as_file =
InterSkill::filename_of_pipeline(I"build-kit", search_list);
if (pipeline_as_file == NULL) {
Errors::nowhere("assimilate pipeline could not be found");
Errors::nowhere("build-kit pipeline could not be found");
return FALSE;
}
@ -83,7 +84,7 @@ int InterSkill::assimilate_internally(build_skill *skill, build_step *S,
RunningPipelines::run(NULL, SS, NULL, inter_paths, requirements_list, S->for_vm);
return TRUE;
} else {
Errors::nowhere("assimilate pipeline could not be parsed");
Errors::nowhere("build-kit pipeline could not be parsed");
return FALSE;
}
#endif

View file

@ -395,7 +395,7 @@ void Kits::construct_graph(inform_kit *K) {
LOOP_OVER(A, inter_architecture) {
build_vertex *BV = Graphs::file_vertex(Architectures::canonical_binary(P, A));
Graphs::need_this_to_build(KV, BV);
BuildSteps::attach(BV, assimilate_using_inter_skill, FALSE, NULL, A, K->as_copy);
BuildSteps::attach(BV, build_kit_using_inter_skill, FALSE, NULL, A, K->as_copy);
ADD_TO_LINKED_LIST(BV, build_vertex, BVL);
}

View file

@ -1,9 +1,9 @@
Total memory consumption was 399461K = 390 MB
Total memory consumption was 400128K = 391 MB
61.0% was used for 2020860 objects, in 380008 frames in 305 x 800K = 244000K = 238 MB:
60.9% was used for 2026661 objects, in 380067 frames in 305 x 800K = 244000K = 238 MB:
10.2% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
7.2% text_stream_array 5256 x 100 = 525600 objects, 29601792 bytes
7.2% text_stream_array 5302 x 100 = 530200 objects, 29860864 bytes
4.7% linked_list 34789 objects, 19481840 bytes
3.9% inter_symbol_array 140 x 1024 = 143360 objects, 16060800 bytes
2.5% parse_node 129462 objects, 10356960 bytes
@ -18,10 +18,10 @@ Total memory consumption was 399461K = 390 MB
0.4% package_request 21139 objects, 1860232 bytes
0.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
0.4% inter_symbols_table 26570 objects, 1700480 bytes
0.3% dictionary 33307 objects, 1598736 bytes
0.3% dictionary 33308 objects, 1598784 bytes
0.3% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
0.3% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
0.3% dict_entry_array 411 x 100 = 41100 objects, 1328352 bytes
0.3% dict_entry_array 423 x 100 = 42300 objects, 1367136 bytes
0.2% map_data 670 objects, 1125600 bytes
0.2% id_body 941 objects, 1076504 bytes
0.2% adjective_meaning 202 objects, 1000304 bytes
@ -236,17 +236,17 @@ Total memory consumption was 399461K = 390 MB
---- I6_generation_data 1 object, 40 bytes
---- kind_template_definition 1 object, 40 bytes
38.9% was used for memory not allocated for objects:
39.0% was used for memory not allocated for objects:
20.3% text stream storage 83179496 bytes in 543561 claims
4.4% dictionary storage 18326016 bytes in 33307 claims
20.4% text stream storage 83604676 bytes in 548197 claims
4.5% dictionary storage 18457088 bytes in 33308 claims
---- sorting 736 bytes in 3 claims
1.7% source text 7200000 bytes in 3 claims
2.6% source text details 10800000 bytes in 2 claims
---- documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
1.0% inter symbols storage 4172240 bytes in 27675 claims
1.0% inter symbols storage 4299216 bytes in 27676 claims
4.1% inter bytecode storage 16802748 bytes in 14 claims
3.9% inter links storage 16174208 bytes in 266 claims
---- inter tree location list storage 191232 bytes in 32 claims
@ -256,5 +256,5 @@ Total memory consumption was 399461K = 390 MB
---- code generation workspace for objects 1336 bytes in 4 claims
---- emitter array storage 161792 bytes in 2062 claims
18.6% was overhead - 76457864 bytes = 74665K = 72 MB
18.5% was overhead - 76159960 bytes = 74374K = 72 MB

View file

@ -1,26 +1,27 @@
100.0% in inform7 run
55.7% in compilation to Inter
40.1% in //Sequence::undertake_queued_tasks//
3.5% in //MajorNodes::pre_pass//
2.6% in //MajorNodes::pass_1//
56.2% in compilation to Inter
40.6% in //Sequence::undertake_queued_tasks//
3.4% in //MajorNodes::pre_pass//
2.7% in //MajorNodes::pass_1//
2.1% in //RTPhrasebook::compile_entries//
1.3% in //ImperativeDefinitions::assess_all//
1.2% in //RTKindConstructors::compile//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //MajorNodes::pass_2//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //World::stage_V//
0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //Sequence::undertake_queued_tasks//
0.1% in //CompletionModule::compile//
0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
2.2% not specifically accounted for
42.1% in running Inter pipeline
12.2% in step preparation
0.1% in //World::stages_II_and_III//
1.8% not specifically accounted for
41.7% in running Inter pipeline
11.9% in step preparation
9.8% in inter step 7/16: consolidate-text
7.9% in inter step 6/16: load-binary-kits
6.8% in inter step 16/16: generate inform6 -> auto.inf
8.0% in inter step 6/16: load-binary-kits
6.6% in inter step 16/16: generate inform6 -> auto.inf
1.5% in inter step 11/16: make-identifiers-unique
0.4% in inter step 12/16: reconcile-verbs
0.3% in inter step 14/16: eliminate-redundant-operations
@ -31,6 +32,6 @@
0.1% in inter step 3/16: parse-linked-matter
0.1% in inter step 4/16: resolve-conditional-compilation
0.1% in inter step 9/16: inspect-plugs
1.6% not specifically accounted for
1.8% in supervisor
1.7% not specifically accounted for
1.6% in supervisor
0.4% not specifically accounted for

View file

@ -1,8 +1,4 @@
new
parse-kit <- *kit
parse-insertions
parse-linked-matter
resolve-conditional-compilation
assimilate
resolve-external-symbols
detect-indirect-calls
generate binary -> *out

View file

@ -0,0 +1,4 @@
new
load-kit-source <- *kit
run pipeline assimilate
generate binary -> *out

View file

@ -1,6 +1,6 @@
read <- *in
run pipeline normalise
run pipeline assimilate
load-binary-kits

View file

@ -1,4 +0,0 @@
parse-insertions
parse-linked-matter
resolve-conditional-compilation
assimilate

View file

@ -5247,7 +5247,7 @@ package main _plain
symbol private misc sk
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
symbol private misc k
symbol external misc plug_00282 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc plug_00341 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc WEAK_ID_39 --> /main/basic_inform_by_graham_nelson/kinds/kind1/WEAK_ID_39
symbol external misc call --> /main/basic_inform_by_graham_nelson/kinds/kind1/mkdef_fn/call
symbol external misc WEAK_ID_40 --> /main/english_language_by_graham_nelson/kinds/kind1/WEAK_ID_40
@ -5463,7 +5463,7 @@ package main _plain
symbol private misc k
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
symbol private misc v
symbol external misc plug_00282 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc plug_00341 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc WEAK_ID_39 --> /main/basic_inform_by_graham_nelson/kinds/kind1/WEAK_ID_39
symbol external misc call --> /main/basic_inform_by_graham_nelson/kinds/kind1/print_fn/call
symbol external misc WEAK_ID_40 --> /main/english_language_by_graham_nelson/kinds/kind1/WEAK_ID_40
@ -5769,7 +5769,7 @@ package main _plain
package block1 _code
symbol private misc k
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
symbol external misc plug_00282 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc plug_00341 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
symbol external misc plug_00005 --> /main/BasicInformKit/functions/UnsignedCompare_fn/UnsignedCompare
symbol external misc REAL_NUMBER_TY --> /main/generic/kinds/kind3/REAL_NUMBER_TY
@ -5953,7 +5953,7 @@ package main _plain
package block1 _code
symbol private misc k
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
symbol external misc plug_00282 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc plug_00341 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc WEAK_ID_39 --> /main/basic_inform_by_graham_nelson/kinds/kind1/WEAK_ID_39
symbol external misc WEAK_ID_40 --> /main/english_language_by_graham_nelson/kinds/kind1/WEAK_ID_40
symbol external misc WEAK_ID_41 --> /main/english_language_by_graham_nelson/kinds/kind2/WEAK_ID_41
@ -6008,7 +6008,7 @@ package main _plain
package block1 _code
symbol private misc k
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
symbol external misc plug_00282 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc plug_00341 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc TEXT_TY --> /main/generic/kinds/kind5/TEXT_TY
symbol external misc RELATION_TY --> /main/generic/kinds/kind25/RELATION_TY
symbol external misc LIST_OF_TY --> /main/generic/kinds/kind29/LIST_OF_TY
@ -6061,7 +6061,7 @@ package main _plain
symbol private misc k
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
symbol private misc fail
symbol external misc plug_00282 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc plug_00341 --> /main/BasicInformKit/functions/KindAtomic_fn/KindAtomic
symbol external misc TEXT_TY --> /main/generic/kinds/kind5/TEXT_TY
symbol external misc plug_00010 --> /main/BasicInformKit/functions/TEXT_TY_Support_fn/TEXT_TY_Support
symbol external misc RELATION_TY --> /main/generic/kinds/kind25/RELATION_TY
@ -6070,7 +6070,7 @@ package main _plain
symbol external misc plug_00021 --> /main/BasicInformKit/functions/LIST_OF_TY_Support_fn/LIST_OF_TY_Support
symbol external misc COMBINATION_TY --> /main/generic/kinds/kind33/COMBINATION_TY
symbol external misc plug_00024 --> /main/BasicInformKit/functions/COMBINATION_TY_Support_fn/COMBINATION_TY_Support
symbol external misc plug_00283 --> /main/BasicInformKit/functions/BlkValueError_fn/BlkValueError
symbol external misc plug_00342 --> /main/BasicInformKit/functions/BlkValueError_fn/BlkValueError
local k K_unchecked
local fail K_unchecked
code
@ -6347,7 +6347,7 @@ package main _plain
symbol public misc TB_Blanks
symbol public misc RANKING_TABLE
symbol external misc K_unchecked_list --> /main/generic/kinds/K_unchecked_list
symbol external misc plug_00284 --> /main/BasicInformKit/arrays/TheEmptyTable_arr/TheEmptyTable
symbol external misc plug_00343 --> /main/BasicInformKit/arrays/TheEmptyTable_arr/TheEmptyTable
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
package print_fn _function
symbol public misc call `PrintTableName`
@ -6356,7 +6356,7 @@ package main _plain
package block1 _code
symbol private misc T
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
symbol external misc plug_00284 --> /main/BasicInformKit/arrays/TheEmptyTable_arr/TheEmptyTable
symbol external misc plug_00343 --> /main/BasicInformKit/arrays/TheEmptyTable_arr/TheEmptyTable
local T K_unchecked
code
inv !switch
@ -34812,7 +34812,7 @@ package main _plain
constant KIT_CONFIGURATION_BITMAP K_int32 = 0
constant KIT_CONFIGURATION_LOOKMODE K_int32 = 2
constant I7_VERSION_NUMBER K_string = "10.1.0"
constant I7_FULL_VERSION_NUMBER K_string = "10.1.0-alpha.1+6T79"
constant I7_FULL_VERSION_NUMBER K_string = "10.1.0-alpha.1+6T80"
constant ^virtual_machine K_string = "C/32d/v1/no-main"
constant ^virtual_machine_icon K_string = "vm_glulx.png"
constant ^language_elements_used K_string = "core, naming, instance counting, glulx external files"
@ -38595,90 +38595,144 @@ package main _plain
symbol plug misc plug_00104 --> /main/connectors/WORDSIZE
symbol plug misc plug_00105 --> /main/connectors/MAX_POSITIVE_NUMBER
symbol plug misc plug_00106 --> /main/connectors/WORDSIZE
symbol plug misc plug_00107 --> /main/connectors/RELS_Y_UNIQUE
symbol plug misc plug_00108 --> /main/connectors/RELS_X_UNIQUE
symbol plug misc plug_00109 --> /main/connectors/RELS_X_UNIQUE
symbol plug misc plug_00110 --> /main/connectors/RELS_Y_UNIQUE
symbol plug misc plug_00111 --> /main/connectors/RELS_EQUIVALENCE
symbol plug misc plug_00112 --> /main/connectors/RELS_SYMMETRIC
symbol plug misc plug_00113 --> /main/connectors/RELS_SYMMETRIC
symbol plug misc plug_00114 --> /main/connectors/RELS_SYMMETRIC
symbol plug misc plug_00107 --> /main/connectors/RR_NAME
symbol plug misc plug_00108 --> /main/connectors/RR_PERMISSIONS
symbol plug misc plug_00109 --> /main/connectors/RR_STORAGE
symbol plug misc plug_00110 --> /main/connectors/RR_KIND
symbol plug misc plug_00111 --> /main/connectors/RR_HANDLER
symbol plug misc plug_00112 --> /main/connectors/RR_DESCRIPTION
symbol plug misc plug_00113 --> /main/connectors/RELS_Y_UNIQUE
symbol plug misc plug_00114 --> /main/connectors/RELS_X_UNIQUE
symbol plug misc plug_00115 --> /main/connectors/RELS_X_UNIQUE
symbol plug misc plug_00116 --> /main/connectors/RELS_Y_UNIQUE
symbol plug misc plug_00117 --> /main/connectors/RELS_EQUIVALENCE
symbol plug misc plug_00118 --> /main/connectors/RELS_SYMMETRIC
symbol plug misc plug_00119 --> /main/connectors/RELS_X_UNIQUE
symbol plug misc plug_00120 --> /main/connectors/RELS_Y_UNIQUE
symbol plug misc plug_00121 --> /main/connectors/ICOUNT_OBJECT
symbol plug misc plug_00122 --> /main/connectors/DICT_WORD_SIZE
symbol plug misc plug_00123 --> /main/connectors/MEMORY_HEAP_SIZE
symbol plug misc plug_00124 --> /main/connectors/TEXT_TY_BufferSize
symbol plug misc plug_00125 --> /main/connectors/PrintShortName
symbol plug misc plug_00126 --> /main/connectors/OBJECT_TY
symbol plug misc plug_00127 --> /main/connectors/BASE_KIND_HWM
symbol plug misc plug_00128 --> /main/connectors/UNKNOWN_TY
symbol plug misc plug_00129 --> /main/connectors/CV_MEANING
symbol plug misc plug_00130 --> /main/connectors/MEANINGLESS_RR
symbol plug misc plug_00131 --> /main/connectors/CV_MODAL
symbol plug misc plug_00132 --> /main/connectors/RNG_SEED_AT_START_OF_PLAY
symbol plug misc plug_00133 --> /main/connectors/MAX_POSITIVE_NUMBER
symbol plug misc plug_00134 --> /main/connectors/KIT_CONFIGURATION_BITMAP
symbol plug misc plug_00135 --> /main/connectors/DrawStatusLine
symbol plug misc plug_00136 --> /main/connectors/WORDSIZE
symbol plug misc plug_00137 --> /main/connectors/DICT_WORD_SIZE
symbol plug misc plug_00138 --> /main/connectors/WORD_NEXTTOHIGHBIT
symbol plug misc plug_00139 --> /main/connectors/NO_EXTERNAL_FILES
symbol plug misc plug_00140 --> /main/connectors/TableOfExternalFiles
symbol plug misc plug_00141 --> /main/connectors/UUID_ARRAY
symbol plug misc plug_00142 --> /main/connectors/NULL
symbol plug misc plug_00143 --> /main/connectors/TB_Blanks
symbol plug misc plug_00144 --> /main/connectors/TC_KOV
symbol plug misc plug_00145 --> /main/connectors/PrintTableName
symbol plug misc plug_00146 --> /main/connectors/NUMBER_TY
symbol plug misc plug_00147 --> /main/connectors/PrintKindValuePair
symbol plug misc plug_00148 --> /main/connectors/rulebook_var_creators
symbol plug misc plug_00149 --> /main/connectors/activity_var_creators
symbol plug misc plug_00150 --> /main/connectors/KOVIsBlockValue
symbol plug misc plug_00151 --> /main/connectors/NUMBER_RULEBOOKS_CREATED
symbol plug misc plug_00152 --> /main/connectors/rulebooks_array
symbol plug misc plug_00153 --> /main/connectors/DefaultValueOfKOV
symbol plug misc plug_00154 --> /main/connectors/RulePrintingRule
symbol plug misc plug_00155 --> /main/connectors/MEMORY_HEAP_SIZE
symbol plug misc plug_00156 --> /main/connectors/TEXT_TY
symbol plug misc plug_00157 --> /main/connectors/NIL_TY
symbol plug misc plug_00158 --> /main/connectors/KOVSupportFunction
symbol plug misc plug_00159 --> /main/connectors/SNIPPET_TY
symbol plug misc plug_00160 --> /main/connectors/TEXT_TY_BufferSize
symbol plug misc plug_00161 --> /main/connectors/PrintSnippet
symbol plug misc plug_00162 --> /main/connectors/LIST_OF_TY
symbol plug misc plug_00163 --> /main/connectors/KOVComparisonFunction
symbol plug misc plug_00164 --> /main/connectors/DefArt
symbol plug misc plug_00165 --> /main/connectors/IndefArt
symbol plug misc plug_00166 --> /main/connectors/LIST_WRITER_INTERNAL_RM
symbol plug misc plug_00167 --> /main/connectors/COMBINATION_TY
symbol plug misc plug_00168 --> /main/connectors/RELATION_TY
symbol plug misc plug_00169 --> /main/connectors/DefaultValueFinder
symbol plug misc plug_00170 --> /main/connectors/RELS_TEST
symbol plug misc plug_00171 --> /main/connectors/RELS_ASSERT_TRUE
symbol plug misc plug_00172 --> /main/connectors/RELS_ASSERT_FALSE
symbol plug misc plug_00173 --> /main/connectors/RELS_SHOW
symbol plug misc plug_00174 --> /main/connectors/RELS_LOOKUP_ANY
symbol plug misc plug_00175 --> /main/connectors/RELS_LOOKUP_ALL_X
symbol plug misc plug_00176 --> /main/connectors/RELS_LOOKUP_ALL_Y
symbol plug misc plug_00177 --> /main/connectors/RELS_LIST
symbol plug misc plug_00178 --> /main/connectors/RELS_EQUIVALENCE
symbol plug misc plug_00179 --> /main/connectors/RELS_SYMMETRIC
symbol plug misc plug_00180 --> /main/connectors/RELS_X_UNIQUE
symbol plug misc plug_00181 --> /main/connectors/RELS_Y_UNIQUE
symbol plug misc plug_00182 --> /main/connectors/KOVDomainSize
symbol plug misc plug_00183 --> /main/connectors/CDefArt
symbol plug misc plug_00184 --> /main/connectors/WriteListOfMarkedObjects
symbol plug misc plug_00185 --> /main/connectors/RELS_ROUTE_FIND
symbol plug misc plug_00186 --> /main/connectors/RELS_ROUTE_FIND_COUNT
symbol plug misc plug_00187 --> /main/connectors/WORD_HIGHBIT
symbol plug misc plug_00188 --> /main/connectors/ShowOneExtension
symbol plug misc plug_00189 --> /main/connectors/RunTimeProblemShowWM
symbol plug misc plug_00190 --> /main/connectors/K0_kind
symbol plug misc plug_00119 --> /main/connectors/RELS_SYMMETRIC
symbol plug misc plug_00120 --> /main/connectors/RELS_SYMMETRIC
symbol plug misc plug_00121 --> /main/connectors/RELS_X_UNIQUE
symbol plug misc plug_00122 --> /main/connectors/RELS_Y_UNIQUE
symbol plug misc plug_00123 --> /main/connectors/RELS_EQUIVALENCE
symbol plug misc plug_00124 --> /main/connectors/RELS_SYMMETRIC
symbol plug misc plug_00125 --> /main/connectors/RELS_X_UNIQUE
symbol plug misc plug_00126 --> /main/connectors/RELS_Y_UNIQUE
symbol plug misc plug_00127 --> /main/connectors/ICOUNT_OBJECT
symbol plug misc plug_00128 --> /main/connectors/CONSTANT_PACKED_TEXT_STORAGE
symbol plug misc plug_00129 --> /main/connectors/DICT_WORD_SIZE
symbol plug misc plug_00130 --> /main/connectors/MEMORY_HEAP_SIZE
symbol plug misc plug_00131 --> /main/connectors/TEXT_TY_BufferSize
symbol plug misc plug_00132 --> /main/connectors/PrintShortName
symbol plug misc plug_00133 --> /main/connectors/OBJECT_TY
symbol plug misc plug_00134 --> /main/connectors/say__p
symbol plug misc plug_00135 --> /main/connectors/BASE_KIND_HWM
symbol plug misc plug_00136 --> /main/connectors/UNKNOWN_TY
symbol plug misc plug_00137 --> /main/connectors/CV_MEANING
symbol plug misc plug_00138 --> /main/connectors/MEANINGLESS_RR
symbol plug misc plug_00139 --> /main/connectors/CV_MODAL
symbol plug misc plug_00140 --> /main/connectors/RNG_SEED_AT_START_OF_PLAY
symbol plug misc plug_00141 --> /main/connectors/prior_named_list
symbol plug misc plug_00142 --> /main/connectors/prior_named_list_gender
symbol plug misc plug_00143 --> /main/connectors/prior_named_noun
symbol plug misc plug_00144 --> /main/connectors/MAX_POSITIVE_NUMBER
symbol plug misc plug_00145 --> /main/connectors/unicode_gestalt_ok
symbol plug misc plug_00146 --> /main/connectors/gg_foregroundchan
symbol plug misc plug_00147 --> /main/connectors/gg_backgroundchan
symbol plug misc plug_00148 --> /main/connectors/KIT_CONFIGURATION_BITMAP
symbol plug misc plug_00149 --> /main/connectors/gg_mainwin
symbol plug misc plug_00150 --> /main/connectors/gg_statuswin
symbol plug misc plug_00151 --> /main/connectors/statuswin_cursize
symbol plug misc plug_00152 --> /main/connectors/statuswin_size
symbol plug misc plug_00153 --> /main/connectors/gg_quotewin
symbol plug misc plug_00154 --> /main/connectors/gg_scriptfref
symbol plug misc plug_00155 --> /main/connectors/gg_scriptstr
symbol plug misc plug_00156 --> /main/connectors/gg_savestr
symbol plug misc plug_00157 --> /main/connectors/gg_commandstr
symbol plug misc plug_00158 --> /main/connectors/gg_command_reading
symbol plug misc plug_00159 --> /main/connectors/DrawStatusLine
symbol plug misc plug_00160 --> /main/connectors/WORDSIZE
symbol plug misc plug_00161 --> /main/connectors/DICT_WORD_SIZE
symbol plug misc plug_00162 --> /main/connectors/statuswin_current
symbol plug misc plug_00163 --> /main/connectors/clr_on
symbol plug misc plug_00164 --> /main/connectors/clr_fg
symbol plug misc plug_00165 --> /main/connectors/clr_bg
symbol plug misc plug_00166 --> /main/connectors/clr_fgstatus
symbol plug misc plug_00167 --> /main/connectors/clr_bgstatus
symbol plug misc plug_00168 --> /main/connectors/say__pc
symbol plug misc plug_00169 --> /main/connectors/say__pc_save
symbol plug misc plug_00170 --> /main/connectors/say__n
symbol plug misc plug_00171 --> /main/connectors/WORD_NEXTTOHIGHBIT
symbol plug misc plug_00172 --> /main/connectors/NO_EXTERNAL_FILES
symbol plug misc plug_00173 --> /main/connectors/TableOfExternalFiles
symbol plug misc plug_00174 --> /main/connectors/UUID_ARRAY
symbol plug misc plug_00175 --> /main/connectors/NULL
symbol plug misc plug_00176 --> /main/connectors/I7S_Swap
symbol plug misc plug_00177 --> /main/connectors/I7S_Comp
symbol plug misc plug_00178 --> /main/connectors/I7S_Tab
symbol plug misc plug_00179 --> /main/connectors/I7S_Col
symbol plug misc plug_00180 --> /main/connectors/I7S_Dir
symbol plug misc plug_00181 --> /main/connectors/TB_Blanks
symbol plug misc plug_00182 --> /main/connectors/TC_KOV
symbol plug misc plug_00183 --> /main/connectors/PrintTableName
symbol plug misc plug_00184 --> /main/connectors/NUMBER_TY
symbol plug misc plug_00185 --> /main/connectors/PrintKindValuePair
symbol plug misc plug_00186 --> /main/connectors/MStack_Top
symbol plug misc plug_00187 --> /main/connectors/MStack_Frame_Extent
symbol plug misc plug_00188 --> /main/connectors/rulebook_var_creators
symbol plug misc plug_00189 --> /main/connectors/activity_var_creators
symbol plug misc plug_00190 --> /main/connectors/KOVIsBlockValue
symbol plug misc plug_00191 --> /main/connectors/parameter_object
symbol plug misc plug_00192 --> /main/connectors/parameter_value
symbol plug misc plug_00193 --> /main/connectors/debugging_rules
symbol plug misc plug_00194 --> /main/connectors/process_rulebook_count
symbol plug misc plug_00195 --> /main/connectors/NUMBER_RULEBOOKS_CREATED
symbol plug misc plug_00196 --> /main/connectors/rulebooks_array
symbol plug misc plug_00197 --> /main/connectors/reason_the_action_failed
symbol plug misc plug_00198 --> /main/connectors/DefaultValueOfKOV
symbol plug misc plug_00199 --> /main/connectors/RulePrintingRule
symbol plug misc plug_00200 --> /main/connectors/MEMORY_HEAP_SIZE
symbol plug misc plug_00201 --> /main/connectors/TEXT_TY
symbol plug misc plug_00202 --> /main/connectors/NIL_TY
symbol plug misc plug_00203 --> /main/connectors/KOVSupportFunction
symbol plug misc plug_00204 --> /main/connectors/I7SFRAME
symbol plug misc plug_00205 --> /main/connectors/SNIPPET_TY
symbol plug misc plug_00206 --> /main/connectors/TEXT_TY_BufferSize
symbol plug misc plug_00207 --> /main/connectors/RawBufferSize
symbol plug misc plug_00208 --> /main/connectors/RawBufferAddress
symbol plug misc plug_00209 --> /main/connectors/TEXT_TY_CastPrimitiveNesting
symbol plug misc plug_00210 --> /main/connectors/PrintSnippet
symbol plug misc plug_00211 --> /main/connectors/say__comp
symbol plug misc plug_00212 --> /main/connectors/TEXT_TY_RE_Trace
symbol plug misc plug_00213 --> /main/connectors/TEXT_TY_RE_RewindCount
symbol plug misc plug_00214 --> /main/connectors/TEXT_TY_RE_Err
symbol plug misc plug_00215 --> /main/connectors/LIST_OF_TY
symbol plug misc plug_00216 --> /main/connectors/KOVComparisonFunction
symbol plug misc plug_00217 --> /main/connectors/DefArt
symbol plug misc plug_00218 --> /main/connectors/IndefArt
symbol plug misc plug_00219 --> /main/connectors/LIST_WRITER_INTERNAL_RM
symbol plug misc plug_00220 --> /main/connectors/LIST_OF_TY_Sort_cf
symbol plug misc plug_00221 --> /main/connectors/COMBINATION_TY
symbol plug misc plug_00222 --> /main/connectors/RELATION_TY
symbol plug misc plug_00223 --> /main/connectors/DefaultValueFinder
symbol plug misc plug_00224 --> /main/connectors/RELS_TEST
symbol plug misc plug_00225 --> /main/connectors/RELS_ASSERT_TRUE
symbol plug misc plug_00226 --> /main/connectors/RELS_ASSERT_FALSE
symbol plug misc plug_00227 --> /main/connectors/RELS_SHOW
symbol plug misc plug_00228 --> /main/connectors/RELS_LOOKUP_ANY
symbol plug misc plug_00229 --> /main/connectors/RELS_LOOKUP_ALL_X
symbol plug misc plug_00230 --> /main/connectors/RELS_LOOKUP_ALL_Y
symbol plug misc plug_00231 --> /main/connectors/RELS_LIST
symbol plug misc plug_00232 --> /main/connectors/RELS_EQUIVALENCE
symbol plug misc plug_00233 --> /main/connectors/RELS_SYMMETRIC
symbol plug misc plug_00234 --> /main/connectors/RELS_X_UNIQUE
symbol plug misc plug_00235 --> /main/connectors/RELS_Y_UNIQUE
symbol plug misc plug_00236 --> /main/connectors/KOVDomainSize
symbol plug misc plug_00237 --> /main/connectors/CDefArt
symbol plug misc plug_00238 --> /main/connectors/WriteListOfMarkedObjects
symbol plug misc plug_00239 --> /main/connectors/RELS_ROUTE_FIND
symbol plug misc plug_00240 --> /main/connectors/RELS_ROUTE_FIND_COUNT
symbol plug misc plug_00241 --> /main/connectors/WORD_HIGHBIT
symbol plug misc plug_00242 --> /main/connectors/ShowOneExtension
symbol plug misc plug_00243 --> /main/connectors/RunTimeProblemShowWM
symbol plug misc plug_00244 --> /main/connectors/K0_kind
symbol socket misc Prop_Falsity --> /main/connectors/Prop_Falsity
symbol socket misc absent --> /main/connectors/absent
symbol socket misc property_id --> /main/connectors/property_id
@ -40124,36 +40178,36 @@ package main _plain
symbol socket misc TEXT_TY_RE_Trace --> /main/connectors/TEXT_TY_RE_Trace
symbol socket misc TEXT_TY_RE_RewindCount --> /main/connectors/TEXT_TY_RE_RewindCount
symbol socket misc LIST_OF_TY_Sort_cf --> /main/connectors/LIST_OF_TY_Sort_cf
symbol plug misc plug_00191 --> /main/connectors/male
symbol plug misc plug_00192 --> /main/connectors/neuter
symbol plug misc plug_00193 --> /main/connectors/NULL
symbol plug misc plug_00194 --> /main/connectors/NULL
symbol plug misc plug_00195 --> /main/connectors/NULL
symbol plug misc plug_00196 --> /main/connectors/NULL
symbol plug misc plug_00197 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00198 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00199 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00200 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00201 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00202 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00203 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00204 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00205 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00206 --> /main/connectors/DEFART_PK
symbol plug misc plug_00207 --> /main/connectors/NULL
symbol plug misc plug_00208 --> /main/connectors/INDEFART_PK
symbol plug misc plug_00209 --> /main/connectors/NULL
symbol plug misc plug_00210 --> /main/connectors/INDEFART_PK
symbol plug misc plug_00211 --> /main/connectors/NULL
symbol plug misc plug_00212 --> /main/connectors/INDEFART_PK
symbol plug misc plug_00213 --> /main/connectors/NULL
symbol plug misc plug_00214 --> /main/connectors/LIGHTED_PK
symbol plug misc plug_00215 --> /main/connectors/NULL
symbol plug misc plug_00216 --> /main/connectors/LIGHTED_PK
symbol plug misc plug_00217 --> /main/connectors/NULL
symbol plug misc plug_00218 --> /main/connectors/UNLIGHTED_PK
symbol plug misc plug_00219 --> /main/connectors/NULL
symbol plug misc plug_00220 --> /main/connectors/PrintShortName
symbol plug misc plug_00245 --> /main/connectors/male
symbol plug misc plug_00246 --> /main/connectors/neuter
symbol plug misc plug_00247 --> /main/connectors/NULL
symbol plug misc plug_00248 --> /main/connectors/NULL
symbol plug misc plug_00249 --> /main/connectors/NULL
symbol plug misc plug_00250 --> /main/connectors/NULL
symbol plug misc plug_00251 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00252 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00253 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00254 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00255 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00256 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00257 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00258 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00259 --> /main/connectors/POSSESS_PK
symbol plug misc plug_00260 --> /main/connectors/DEFART_PK
symbol plug misc plug_00261 --> /main/connectors/NULL
symbol plug misc plug_00262 --> /main/connectors/INDEFART_PK
symbol plug misc plug_00263 --> /main/connectors/NULL
symbol plug misc plug_00264 --> /main/connectors/INDEFART_PK
symbol plug misc plug_00265 --> /main/connectors/NULL
symbol plug misc plug_00266 --> /main/connectors/INDEFART_PK
symbol plug misc plug_00267 --> /main/connectors/NULL
symbol plug misc plug_00268 --> /main/connectors/LIGHTED_PK
symbol plug misc plug_00269 --> /main/connectors/NULL
symbol plug misc plug_00270 --> /main/connectors/LIGHTED_PK
symbol plug misc plug_00271 --> /main/connectors/NULL
symbol plug misc plug_00272 --> /main/connectors/UNLIGHTED_PK
symbol plug misc plug_00273 --> /main/connectors/NULL
symbol plug misc plug_00274 --> /main/connectors/PrintShortName
symbol socket misc LanguageTimeOfDay --> /main/connectors/LanguageTimeOfDay
symbol socket misc LanguageDirection --> /main/connectors/LanguageDirection
symbol socket misc LanguageToInformese --> /main/connectors/LanguageToInformese
@ -40216,67 +40270,72 @@ package main _plain
symbol socket misc LanguageContractionForms --> /main/connectors/LanguageContractionForms
symbol socket misc LanguageArticles --> /main/connectors/LanguageArticles
symbol socket misc LanguageGNAsToArticles --> /main/connectors/LanguageGNAsToArticles
symbol plug misc plug_00221 --> /main/connectors/OBJECT_TY
symbol plug misc plug_00222 --> /main/connectors/workflag2
symbol plug misc plug_00223 --> /main/connectors/VM_Initialise
symbol plug misc plug_00224 --> /main/connectors/SEED_RANDOM_NUMBER_GENERATOR_R
symbol plug misc plug_00225 --> /main/connectors/Submain
symbol plug misc plug_00226 --> /main/connectors/VM_PreInitialise
symbol plug misc plug_00227 --> /main/connectors/HeapInitialise
symbol plug misc plug_00228 --> /main/connectors/StackFramingInitialise
symbol plug misc plug_00229 --> /main/connectors/CreateDynamicRelations
symbol plug misc plug_00230 --> /main/connectors/VM_PrintToBuffer
symbol plug misc plug_00231 --> /main/connectors/NULL
symbol plug misc plug_00232 --> /main/connectors/RunTimeError
symbol plug misc plug_00233 --> /main/connectors/WORDSIZE
symbol plug misc plug_00234 --> /main/connectors/VM_LowerToUpperCase
symbol plug misc plug_00235 --> /main/connectors/say__p
symbol plug misc plug_00236 --> /main/connectors/RegardingSingleObject
symbol plug misc plug_00237 --> /main/connectors/PRINTING_THE_NAME_ACT
symbol plug misc plug_00238 --> /main/connectors/indef_mode
symbol plug misc plug_00239 --> /main/connectors/parameter_value
symbol plug misc plug_00240 --> /main/connectors/short_name_indef
symbol plug misc plug_00241 --> /main/connectors/PrintOrRun
symbol plug misc plug_00242 --> /main/connectors/cap_short_name
symbol plug misc plug_00243 --> /main/connectors/short_name
symbol plug misc plug_00244 --> /main/connectors/plural
symbol plug misc plug_00245 --> /main/connectors/articles
symbol plug misc plug_00246 --> /main/connectors/LanguageCases
symbol plug misc plug_00247 --> /main/connectors/LanguageGNAsToArticles
symbol plug misc plug_00248 --> /main/connectors/LanguageArticles
symbol plug misc plug_00249 --> /main/connectors/LanguageContractionForms
symbol plug misc plug_00250 --> /main/connectors/Glulx_PrintAnyToArray
symbol plug misc plug_00251 --> /main/connectors/EnglishNumber
symbol plug misc plug_00252 --> /main/connectors/LanguageContraction
symbol plug misc plug_00253 --> /main/connectors/proper
symbol plug misc plug_00254 --> /main/connectors/article
symbol plug misc plug_00255 --> /main/connectors/TEXT_TY_Compare
symbol plug misc plug_00256 --> /main/connectors/EMPTY_TEXT_VALUE
symbol plug misc plug_00257 --> /main/connectors/TEXT_TY_Say_Capitalised
symbol plug misc plug_00258 --> /main/connectors/LanguageAnimateGender
symbol plug misc plug_00259 --> /main/connectors/LanguageInanimateGender
symbol plug misc plug_00260 --> /main/connectors/pluralname
symbol plug misc plug_00261 --> /main/connectors/prior_named_noun
symbol plug misc plug_00262 --> /main/connectors/prior_named_list
symbol plug misc plug_00263 --> /main/connectors/PRINTING_THE_PLURAL_NAME_ACT
symbol plug misc plug_00264 --> /main/connectors/PRINTING_ROOM_DESC_DETAILS_ACT
symbol plug misc plug_00265 --> /main/connectors/PRINTING_INVENTORY_DETAILS_ACT
symbol plug misc plug_00266 --> /main/connectors/LISTING_CONTENTS_ACT
symbol plug misc plug_00267 --> /main/connectors/GROUPING_TOGETHER_ACT
symbol plug misc plug_00268 --> /main/connectors/PRINTING_RESPONSE_ACT
symbol plug misc plug_00269 --> /main/connectors/debug_rules
symbol plug misc plug_00270 --> /main/connectors/Activity_before_rulebooks
symbol plug misc plug_00271 --> /main/connectors/rulebooks_array
symbol plug misc plug_00272 --> /main/connectors/EMPTY_RULEBOOK
symbol plug misc plug_00273 --> /main/connectors/Activity_for_rulebooks
symbol plug misc plug_00274 --> /main/connectors/Activity_after_rulebooks
symbol plug misc plug_00275 --> /main/connectors/FollowRulebook
symbol plug misc plug_00276 --> /main/connectors/RunTimeProblem
symbol plug misc plug_00277 --> /main/connectors/RTP_TOOMANYACTS
symbol plug misc plug_00278 --> /main/connectors/MStack_CreateAVVars
symbol plug misc plug_00279 --> /main/connectors/MStack_DestroyAVVars
symbol plug misc plug_00280 --> /main/connectors/RTP_CANTABANDON
symbol plug misc plug_00281 --> /main/connectors/RTP_CANTEND
symbol plug misc plug_00275 --> /main/connectors/OBJECT_TY
symbol plug misc plug_00276 --> /main/connectors/workflag2
symbol plug misc plug_00277 --> /main/connectors/VM_Initialise
symbol plug misc plug_00278 --> /main/connectors/SEED_RANDOM_NUMBER_GENERATOR_R
symbol plug misc plug_00279 --> /main/connectors/Submain
symbol plug misc plug_00280 --> /main/connectors/VM_PreInitialise
symbol plug misc plug_00281 --> /main/connectors/HeapInitialise
symbol plug misc plug_00282 --> /main/connectors/StackFramingInitialise
symbol plug misc plug_00283 --> /main/connectors/CreateDynamicRelations
symbol plug misc plug_00284 --> /main/connectors/VM_PrintToBuffer
symbol plug misc plug_00285 --> /main/connectors/NULL
symbol plug misc plug_00286 --> /main/connectors/RunTimeError
symbol plug misc plug_00287 --> /main/connectors/WORDSIZE
symbol plug misc plug_00288 --> /main/connectors/VM_LowerToUpperCase
symbol plug misc plug_00289 --> /main/connectors/say__p
symbol plug misc plug_00290 --> /main/connectors/RegardingSingleObject
symbol plug misc plug_00291 --> /main/connectors/PRINTING_THE_NAME_ACT
symbol plug misc plug_00292 --> /main/connectors/indef_mode
symbol plug misc plug_00293 --> /main/connectors/parameter_value
symbol plug misc plug_00294 --> /main/connectors/short_name_indef
symbol plug misc plug_00295 --> /main/connectors/PrintOrRun
symbol plug misc plug_00296 --> /main/connectors/caps_mode
symbol plug misc plug_00297 --> /main/connectors/cap_short_name
symbol plug misc plug_00298 --> /main/connectors/short_name
symbol plug misc plug_00299 --> /main/connectors/plural
symbol plug misc plug_00300 --> /main/connectors/articles
symbol plug misc plug_00301 --> /main/connectors/short_name_case
symbol plug misc plug_00302 --> /main/connectors/LanguageCases
symbol plug misc plug_00303 --> /main/connectors/LanguageGNAsToArticles
symbol plug misc plug_00304 --> /main/connectors/LanguageArticles
symbol plug misc plug_00305 --> /main/connectors/LanguageContractionForms
symbol plug misc plug_00306 --> /main/connectors/Glulx_PrintAnyToArray
symbol plug misc plug_00307 --> /main/connectors/EnglishNumber
symbol plug misc plug_00308 --> /main/connectors/LanguageContraction
symbol plug misc plug_00309 --> /main/connectors/proper
symbol plug misc plug_00310 --> /main/connectors/article
symbol plug misc plug_00311 --> /main/connectors/TEXT_TY_Compare
symbol plug misc plug_00312 --> /main/connectors/EMPTY_TEXT_VALUE
symbol plug misc plug_00313 --> /main/connectors/TEXT_TY_Say_Capitalised
symbol plug misc plug_00314 --> /main/connectors/LanguageAnimateGender
symbol plug misc plug_00315 --> /main/connectors/LanguageInanimateGender
symbol plug misc plug_00316 --> /main/connectors/pluralname
symbol plug misc plug_00317 --> /main/connectors/prior_named_noun
symbol plug misc plug_00318 --> /main/connectors/prior_named_list
symbol plug misc plug_00319 --> /main/connectors/activities_sp
symbol plug misc plug_00320 --> /main/connectors/PRINTING_THE_PLURAL_NAME_ACT
symbol plug misc plug_00321 --> /main/connectors/PRINTING_ROOM_DESC_DETAILS_ACT
symbol plug misc plug_00322 --> /main/connectors/PRINTING_INVENTORY_DETAILS_ACT
symbol plug misc plug_00323 --> /main/connectors/LISTING_CONTENTS_ACT
symbol plug misc plug_00324 --> /main/connectors/GROUPING_TOGETHER_ACT
symbol plug misc plug_00325 --> /main/connectors/PRINTING_RESPONSE_ACT
symbol plug misc plug_00326 --> /main/connectors/inhibit_flag
symbol plug misc plug_00327 --> /main/connectors/saved_debug_rules
symbol plug misc plug_00328 --> /main/connectors/debug_rules
symbol plug misc plug_00329 --> /main/connectors/Activity_before_rulebooks
symbol plug misc plug_00330 --> /main/connectors/rulebooks_array
symbol plug misc plug_00331 --> /main/connectors/EMPTY_RULEBOOK
symbol plug misc plug_00332 --> /main/connectors/Activity_for_rulebooks
symbol plug misc plug_00333 --> /main/connectors/Activity_after_rulebooks
symbol plug misc plug_00334 --> /main/connectors/FollowRulebook
symbol plug misc plug_00335 --> /main/connectors/RunTimeProblem
symbol plug misc plug_00336 --> /main/connectors/RTP_TOOMANYACTS
symbol plug misc plug_00337 --> /main/connectors/MStack_CreateAVVars
symbol plug misc plug_00338 --> /main/connectors/MStack_DestroyAVVars
symbol plug misc plug_00339 --> /main/connectors/RTP_CANTABANDON
symbol plug misc plug_00340 --> /main/connectors/RTP_CANTEND
symbol socket misc DefaultTopic --> /main/connectors/DefaultTopic
symbol socket misc PrintSnippet --> /main/connectors/PrintSnippet
symbol socket misc LIST_WRITER_INTERNAL_RM --> /main/connectors/LIST_WRITER_INTERNAL_RM
@ -40319,9 +40378,9 @@ package main _plain
symbol socket misc activities_sp --> /main/connectors/activities_sp
symbol socket misc inhibit_flag --> /main/connectors/inhibit_flag
symbol socket misc saved_debug_rules --> /main/connectors/saved_debug_rules
symbol plug misc plug_00282 --> /main/connectors/KindAtomic
symbol plug misc plug_00283 --> /main/connectors/BlkValueError
symbol plug misc plug_00284 --> /main/connectors/TheEmptyTable
symbol plug misc plug_00341 --> /main/connectors/KindAtomic
symbol plug misc plug_00342 --> /main/connectors/BlkValueError
symbol plug misc plug_00343 --> /main/connectors/TheEmptyTable
package template _plain
package constants _submodule
package DynamicMemoryAllocation_con _plain

View file

@ -9,7 +9,7 @@ The following will be set at the command line.
=
pathname *path_to_inter = NULL;
pathname *kit_to_assimilate = NULL;
pathname *kit_to_build = NULL;
pathname *domain_path = NULL;
linked_list *inter_file_list = NULL; /* of |filename| */
filename *output_textually = NULL;
@ -33,9 +33,9 @@ void Main::add_pipeline_variable_from_filename(text_stream *name, filename *F) {
When Inter is called at the command line, it begins at |main|, like all C
programs.
Inter can do three different things: assimilate a kit, run a pipeline of
Inter can do three different things: build a kit, run a pipeline of
code generation stages, and verify/transcode files of Inter code. In fact,
though, that's really only two different things, because assimilation is
though, that's really only two different things, because kit-building is
also done with a pipeline.
=
@ -43,7 +43,7 @@ int main(int argc, char **argv) {
@<Start up the modules@>;
@<Begin with an empty file list and variables dictionary@>;
@<Read the command line@>;
if (kit_to_assimilate) @<Set up a pipeline for assimilation@>;
if (kit_to_build) @<Set up a pipeline for kit-building@>;
if ((pipeline_as_file) || (pipeline_as_text))
@<Run the pipeline@>
else
@ -72,20 +72,20 @@ it only ever writes the binary form of the code it produces, so only |*out|
is used. But at times in the past it has been useful to debug with the text
form, which would be written to |*outt|.
@<Set up a pipeline for assimilation@> =
@<Set up a pipeline for kit-building@> =
inter_architecture *A = PipelineModule::get_architecture();
if (A == NULL) Errors::fatal("no -architecture given");
pathname *path_to_pipelines = Pathnames::down(path_to_inter, I"Pipelines");
pipeline_as_file = Filenames::in(path_to_pipelines, I"assimilate.interpipeline");
pipeline_as_file = Filenames::in(path_to_pipelines, I"build-kit.interpipeline");
pipeline_as_text = NULL;
Main::add_pipeline_variable(I"*kit",
Pathnames::directory_name(kit_to_assimilate));
Pathnames::directory_name(kit_to_build));
Main::add_pipeline_variable_from_filename(I"*out",
Architectures::canonical_binary(kit_to_assimilate, A));
Architectures::canonical_binary(kit_to_build, A));
Main::add_pipeline_variable_from_filename(I"*outt",
Architectures::canonical_textual(kit_to_assimilate, A));
Architectures::canonical_textual(kit_to_build, A));
@<Run the pipeline@> =
if (LinkedLists::len(inter_file_list) > 0)
@ -93,7 +93,7 @@ form, which would be written to |*outt|.
if ((pipeline_as_file) && (pipeline_as_text))
Errors::fatal("-pipeline-text and -pipeline-file are mutually exclusive");
linked_list *inter_paths = NEW_LINKED_LIST(pathname);
if (kit_to_assimilate) ADD_TO_LINKED_LIST(kit_to_assimilate, pathname, inter_paths);
if (kit_to_build) ADD_TO_LINKED_LIST(kit_to_build, pathname, inter_paths);
inter_pipeline *SS;
if (pipeline_as_file)
SS = ParsingPipelines::from_file(pipeline_as_file, pipeline_vars, NULL);
@ -142,7 +142,7 @@ form, which would be written to |*outt|.
@e PIPELINE_VARIABLE_CLSW
@e DOMAIN_CLSW
@e ARCHITECTURE_CLSW
@e ASSIMILATE_CLSW
@e BUILD_KIT_CLSW
@e INTERNAL_CLSW
@<Read the command line@> =
@ -166,8 +166,8 @@ form, which would be written to |*outt|.
L"specify folder of internal Inform resources");
CommandLine::declare_switch(ARCHITECTURE_CLSW, L"architecture", 2,
L"generate Inter with architecture X");
CommandLine::declare_switch(ASSIMILATE_CLSW, L"assimilate", 2,
L"assimilate (i.e., build) Inter kit X for the current architecture");
CommandLine::declare_switch(BUILD_KIT_CLSW, L"build-kit", 2,
L"build Inter kit X for the current architecture");
CommandLine::read(argc, argv, NULL, &Main::respond, &Main::add_file);
@ -182,7 +182,7 @@ void Main::respond(int id, int val, text_stream *arg, void *state) {
case PIPELINE_FILE_CLSW: pipeline_as_file = Filenames::from_text(arg); break;
case PIPELINE_VARIABLE_CLSW: @<Add a pipeline variable to the dictionary@>; break;
case DOMAIN_CLSW: domain_path = Pathnames::from_text(arg); break;
case ASSIMILATE_CLSW: kit_to_assimilate = Pathnames::from_text(arg); break;
case BUILD_KIT_CLSW: kit_to_build = Pathnames::from_text(arg); break;
case INTERNAL_CLSW: internal_path = Pathnames::from_text(arg); break;
case ARCHITECTURE_CLSW:
if (PipelineModule::set_architecture(arg) == FALSE)

View file

@ -83,18 +83,18 @@ and therefore assimilation is really a cross-compilation from I6 to Inter.
Kits are like so-called "fat binaries", in that they contain binary Inter
for each different architecture with which they are compatible. Inter can
assimilate for only one architecture at a time, so a command must specify
build kits for only one architecture at a time, so a command must specify
which is wanted. For example:
= (text as ConsoleText)
$ inter/Tangled/inter -architecture 16 -assimilate K
$ inter/Tangled/inter -architecture 32d -assimilate K
$ inter/Tangled/inter -architecture 16 -build-kit K
$ inter/Tangled/inter -architecture 32d -build-kit K
=
Incrementally assimilating kits as needed could be done with something like
Incrementally building kits as needed could be done with something like
the Unix tool |make|, but in fact Inbuild has this ability: the command
= (text as ConsoleText)
$ inbuild/Tangled/inbuild -build K
=
looks at the kit, works out which architectures need re-assimilation, and
looks at the kit, works out which architectures need rebuilding, and
then issues commands like the above to instruct |inter| to do so. Indeed,
multiple kits can be managed with a single command:
= (text as ConsoleText)

View file

@ -1,8 +1,4 @@
new
parse-kit <- *kit
parse-insertions
parse-linked-matter
resolve-conditional-compilation
assimilate
resolve-external-symbols
detect-indirect-calls
generate binary -> *out

View file

@ -0,0 +1,4 @@
new
load-kit-source <- *kit
run pipeline assimilate
generate binary -> *out

View file

@ -29,7 +29,7 @@ void CAssembly::end(code_generation *gen) {
@ Inter is for the most part fully specified and cross-platform, but assembly
language is the big hole in that. It is legal for Inter code to contain almost
anything which purports to be assembly language. For example, the following
code will successfully assimilate as part of an Inter kit:
code will successfully build as part of an Inter kit:
= (text as Inform 6)
[ Peculiar x;
@bandersnatch x;

View file

@ -15,6 +15,7 @@ typedef struct inter_pipeline {
struct pipeline_ephemera ephemera; /* temporary storage when running */
struct linked_list *search_list; /* used when parsing only */
struct pathname *local;
int run_depth;
CLASS_DEFINITION
} inter_pipeline;
@ -25,6 +26,7 @@ inter_pipeline *ParsingPipelines::new_pipeline(dictionary *D, linked_list *L, pa
S->erroneous = FALSE;
S->search_list = L;
S->local = local;
S->run_depth = 0;
RunningPipelines::clean_pipeline(S);
return S;
}
@ -158,7 +160,10 @@ void ParsingPipelines::parse_line(inter_pipeline *pipeline, text_stream *instruc
DISCARD_TEXT(T)
}
@ Instructions are mostly steps, but...
@ Instructions are mostly steps, but:
(a) A line beginning with an |!| is a comment,
(b) |run pipeline X| means to incorporate pipeline |X| here.
=
void ParsingPipelines::parse_instruction(inter_pipeline *pipeline, text_stream *T,
@ -167,19 +172,30 @@ void ParsingPipelines::parse_instruction(inter_pipeline *pipeline, text_stream *
if (Regexp::match(&mr, T, L"!%c*")) {
;
} else if (Regexp::match(&mr, T, L"run pipeline (%c*)")) {
filename *F = NULL;
#ifdef SUPERVISOR_MODULE
filename *F = InterSkill::filename_of_pipeline(mr.exp[0], pipeline->search_list);
#endif
#ifndef SUPERVISOR_MODULE
filename *F = Filenames::in(pipeline->local, mr.exp[0]);
F = InterSkill::filename_of_pipeline(mr.exp[0], pipeline->search_list);
#endif
if (F == NULL) {
text_stream *leafname = Str::new();
WRITE_TO(leafname, "%S.interpipeline", mr.exp[0]);
F = Filenames::in(pipeline->local, leafname);
}
if (F == NULL) {
PipelineErrors::syntax_with(tfp, T,
"unable to find the pipeline '%S'", mr.exp[0]);
pipeline->erroneous = TRUE;
} else
TextFiles::read(F, FALSE, "can't open inter pipeline file",
TRUE, ParsingPipelines::scan_line, NULL, (void *) pipeline);
} else {
if (pipeline->run_depth++ > 100) {
PipelineErrors::syntax_with(tfp, T,
"pipeline seems to have become circular: '%S'", mr.exp[0]);
pipeline->erroneous = TRUE;
} else {
TextFiles::read(F, FALSE, "can't open inter pipeline file",
TRUE, ParsingPipelines::scan_line, NULL, (void *) pipeline);
}
pipeline->run_depth--;
}
} else {
pipeline_step *ST = ParsingPipelines::parse_step(pipeline, T, tfp);
if (ST) ADD_TO_LINKED_LIST(ST, pipeline_step, pipeline->steps);

View file

@ -8,11 +8,11 @@ source code for a kit.
=
void ParsingStages::create_pipeline_stage(void) {
ParsingPipelines::new_stage(I"parse-kit", ParsingStages::run_parse_kit, TEMPLATE_FILE_STAGE_ARG, TRUE);
ParsingPipelines::new_stage(I"load-kit-source", ParsingStages::run_load_kit_source, TEMPLATE_FILE_STAGE_ARG, TRUE);
ParsingPipelines::new_stage(I"parse-insertions", ParsingStages::run_parse_insertions, NO_STAGE_ARG, FALSE);
}
int ParsingStages::run_parse_kit(pipeline_step *step) {
int ParsingStages::run_load_kit_source(pipeline_step *step) {
inter_package *main_package = Site::main_package_if_it_exists(step->ephemera.repository);
inter_bookmark IBM;
if (main_package) {

View file

@ -42,8 +42,7 @@ void Architectures::create(void) {
}
@h Canonical filenames.
When a kit is assimilated, its Inter code is stored in files with these
leafnames:
When a kit is built, its Inter code is stored in files with these leafnames:
=
filename *Architectures::canonical_binary(pathname *P, inter_architecture *A) {