Skip to content

Commit

Permalink
Fix for Jira bug I7-2078
Browse files Browse the repository at this point in the history
  • Loading branch information
ganelson committed May 7, 2022
1 parent ad42986 commit a32d287
Show file tree
Hide file tree
Showing 10 changed files with 48 additions and 29 deletions.
4 changes: 2 additions & 2 deletions README.md
@@ -1,6 +1,6 @@
# Inform 7

v10.1.0-beta+6U98 'Krypton' (5 May 2022)
v10.1.0-beta+6U99 'Krypton' (7 May 2022)

## About Inform 7

Expand Down Expand Up @@ -193,7 +193,7 @@ These are templates used by Inform to release story files within a website:
These are Javascript interpreters used to release such websites in a form which can play the story files interactively online:

* inform7/Internal/Templates - Template websites for Inform 7's 'release as a website' feature
* inform7/Internal/Templates/Parchment - Z-machine in Javascript - __Parchment for Inform 7 (2022.4)__ - from [https://github.com/curiousdannii/parchment], maintained by [Dannii Willis](https://github.com/curiousdannii)
* inform7/Internal/Templates/Parchment - Z-machine in Javascript - __Parchment for Inform 7 (2022.5)__ - from [https://github.com/curiousdannii/parchment], maintained by [Dannii Willis](https://github.com/curiousdannii)
* inform7/Internal/Templates/Quixe - Glulx in Javascript - __Quixe for Inform 7 (v. 2.2.0)__ - from [https://github.com/erkyrath/quixe], maintained by [Andrew Plotkin](https://github.com/erkyrath)

### Documentation shipped with Inform
Expand Down
4 changes: 2 additions & 2 deletions build.txt
@@ -1,3 +1,3 @@
Prerelease: beta
Build Date: 5 May 2022
Build Number: 6U98
Build Date: 7 May 2022
Build Number: 6U99
9 changes: 7 additions & 2 deletions docs/supervisor-module/1-ic.html
Expand Up @@ -662,8 +662,13 @@ <h1><a href="../index.html">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">project_file_request</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">project_file_request</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="identifier-syntax">NULL</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">P</span><span class="plain-syntax">) </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pbm.html#SP3" class="function-link"><span class="function-syntax">ProjectBundleManager::claim_folder_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</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">F</span><span class="plain-syntax">) </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pfm.html#SP3" class="function-link"><span class="function-syntax">ProjectFileManager::claim_file_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</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">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pbm.html#SP3" class="function-link"><span class="function-syntax">ProjectBundleManager::claim_folder_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</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="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">Errors::fatal</span><span class="plain-syntax">(</span><span class="string-syntax">"No such Inform project directory"</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">F</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pfm.html#SP3" class="function-link"><span class="function-syntax">ProjectFileManager::claim_file_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</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="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">Errors::fatal</span><span class="plain-syntax">(</span><span class="string-syntax">"No such Inform source file"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</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>
Expand Down
5 changes: 4 additions & 1 deletion docs/supervisor-module/4-pbm.html
Expand Up @@ -132,7 +132,10 @@ <h1><a href="../index.html">
<span class="plain-syntax">}</span>

<span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="function-syntax">ProjectBundleManager::claim_folder_as_copy</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">ProjectBundleManager::claim_folder_as_copy</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-pbm.html#SP2" class="function-link"><span class="function-syntax">ProjectBundleManager::new_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::directory_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">P</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">canary</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Source"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"story.ni"</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">TextFiles::exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">canary</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-pbm.html#SP2" class="function-link"><span class="function-syntax">ProjectBundleManager::new_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::directory_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">P</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">NULL</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. Searching. </b>Here we look through a nest to find all projects matching the supplied
Expand Down
1 change: 1 addition & 0 deletions docs/supervisor-module/4-pfm.html
Expand Up @@ -133,6 +133,7 @@ <h1><a href="../index.html">
<span class="plain-syntax">}</span>

<span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="function-syntax">ProjectFileManager::claim_file_as_copy</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">ProjectFileManager::claim_file_as_copy</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP19">&#167;19</a></span></button><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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TextFiles::exists</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pfm.html#SP2" class="function-link"><span class="function-syntax">ProjectFileManager::new_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Filenames::get_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">), </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> = </span><a href="4-pfm.html#SP2" class="function-link"><span class="function-syntax">ProjectFileManager::from_copy</span></a><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">proj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">stand_alone</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
Expand Down
9 changes: 7 additions & 2 deletions inbuild/supervisor-module/Chapter 1/Inbuild Control.w
Expand Up @@ -556,8 +556,13 @@ void Supervisor::make_project_from_command_line(inbuild_copy *C) {
if (Str::len(project_file_request) > 0)
F = Filenames::from_text(project_file_request);
if (C == NULL) {
if (P) C = ProjectBundleManager::claim_folder_as_copy(P);
else if (F) C = ProjectFileManager::claim_file_as_copy(F);
if (P) {
C = ProjectBundleManager::claim_folder_as_copy(P);
if (C == NULL) Errors::fatal("No such Inform project directory");
} else if (F) {
C = ProjectFileManager::claim_file_as_copy(F);
if (C == NULL) Errors::fatal("No such Inform source file");
}
}
inform_project *proj = NULL;
if (C) {
Expand Down
5 changes: 4 additions & 1 deletion inbuild/supervisor-module/Chapter 4/Project Bundle Manager.w
Expand Up @@ -71,7 +71,10 @@ void ProjectBundleManager::claim_as_copy(inbuild_genre *gen, inbuild_copy **C,
}

inbuild_copy *ProjectBundleManager::claim_folder_as_copy(pathname *P) {
return ProjectBundleManager::new_copy(Pathnames::directory_name(P), P);
filename *canary = Filenames::in(Pathnames::down(P, I"Source"), I"story.ni");
if (TextFiles::exists(canary))
return ProjectBundleManager::new_copy(Pathnames::directory_name(P), P);
return NULL;
}

@h Searching.
Expand Down
1 change: 1 addition & 0 deletions inbuild/supervisor-module/Chapter 4/Project File Manager.w
Expand Up @@ -72,6 +72,7 @@ void ProjectFileManager::claim_as_copy(inbuild_genre *gen, inbuild_copy **C,
}

inbuild_copy *ProjectFileManager::claim_file_as_copy(filename *F) {
if (TextFiles::exists(F) == FALSE) return NULL;
inbuild_copy *C = ProjectFileManager::new_copy(Filenames::get_leafname(F), F);
inform_project *proj = ProjectFileManager::from_copy(C);
proj->stand_alone = TRUE;
Expand Down
10 changes: 5 additions & 5 deletions inform7/Figures/memory-diagnostics.txt
@@ -1,6 +1,6 @@
Total memory consumption was 129402K = 126 MB

---- was used for 2043907 objects, in 362622 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2043909 objects, in 362624 frames in 0 x 800K = 0K = 0 MB:

31.5% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
19.5% text_stream_array 4600 x 100 = 460000 objects, 25907200 bytes
Expand Down Expand Up @@ -112,10 +112,10 @@ Total memory consumption was 129402K = 126 MB
---- generated_segment 14 objects, 14784 bytes
---- booking_list 407 objects, 13024 bytes
---- adjective_iname_holder 320 objects, 12800 bytes
---- pathname 314 objects, 12560 bytes
---- pathname 315 objects, 12600 bytes
---- uniqueness_count 454 objects, 10896 bytes
---- inter_construct 30 objects, 10320 bytes
---- filename 252 objects, 10080 bytes
---- filename 253 objects, 10120 bytes
---- stopwatch_timer 113 objects, 9040 bytes
---- equation_node 68 objects, 7616 bytes
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
Expand Down Expand Up @@ -237,7 +237,7 @@ Total memory consumption was 129402K = 126 MB

100.0% was used for memory not allocated for objects:

59.7% text stream storage 79116868 bytes in 478026 claims
59.7% text stream storage 79116980 bytes in 478028 claims
3.9% dictionary storage 5227008 bytes in 7517 claims
---- sorting 1448 bytes in 149 claims
5.4% source text 7200000 bytes in 3 claims
Expand All @@ -255,5 +255,5 @@ Total memory consumption was 129402K = 126 MB
---- code generation workspace for objects 1336 bytes in 4 claims
0.2% emitter array storage 280032 bytes in 1997 claims

-138.-6% was overhead - -183787216 bytes = -179479K = -175 MB
-138.-6% was overhead - -183787296 bytes = -179479K = -175 MB

29 changes: 15 additions & 14 deletions inform7/Figures/timings-diagnostics.txt
@@ -1,32 +1,33 @@
100.0% in inform7 run
71.5% in compilation to Inter
50.2% in //Sequence::undertake_queued_tasks//
71.4% in compilation to Inter
50.5% in //Sequence::undertake_queued_tasks//
4.3% in //MajorNodes::pre_pass//
3.5% in //MajorNodes::pass_1//
2.5% in //RTPhrasebook::compile_entries//
3.4% in //MajorNodes::pass_1//
2.4% in //RTPhrasebook::compile_entries//
1.8% in //ImperativeDefinitions::assess_all//
1.6% in //RTKindConstructors::compile//
1.4% in //RTKindConstructors::compile//
1.0% in //Sequence::lint_inter//
0.6% in //MajorNodes::pass_2//
0.6% in //World::stage_V//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //MajorNodes::pass_2//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //World::stage_V//
0.2% in //CompletionModule::compile//
0.2% in //InferenceSubjects::emit_all//
0.2% in //RTKindConstructors::compile_permissions//
0.2% in //Task::make_built_in_kind_constructors//
3.3% not specifically accounted for
25.5% in running Inter pipeline
0.2% in //World::stages_II_and_III//
2.9% not specifically accounted for
25.6% in running Inter pipeline
10.0% in step 14/15: generate inform6 -> auto.inf
5.6% in step 5/15: load-binary-kits
5.2% in step 6/15: make-synoptic-module
5.7% in step 5/15: load-binary-kits
5.3% in step 6/15: make-synoptic-module
1.4% in step 9/15: make-identifiers-unique
0.4% in step 12/15: eliminate-redundant-operations
0.4% in step 4/15: compile-splats
0.4% in step 7/15: shorten-wiring
0.4% in step 8/15: detect-indirect-calls
0.2% in step 11/15: eliminate-redundant-labels
0.2% in step 8/15: detect-indirect-calls
1.5% not specifically accounted for
2.5% in supervisor
1.2% not specifically accounted for
2.4% in supervisor
0.5% not specifically accounted for

0 comments on commit a32d287

Please sign in to comment.