1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-01 06:24:58 +03:00

inbuild now recognises only .i7x files as extensions

This commit is contained in:
Graham Nelson 2022-05-08 11:20:26 +01:00
parent d9e961e0fc
commit 9fe89fdfa3
6 changed files with 72 additions and 55 deletions

View file

@ -1,6 +1,6 @@
# Inform 7 # Inform 7
v10.1.0-beta+6U99 'Krypton' (7 May 2022) v10.1.0-beta+6V01 'Krypton' (8 May 2022)
## About Inform 7 ## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: beta Prerelease: beta
Build Date: 7 May 2022 Build Date: 8 May 2022
Build Number: 6U99 Build Number: 6V01

View file

@ -174,8 +174,11 @@ cautiously for the sake of case-sensitive file systems.
</p> </p>
<p class="commentary">Nobody should any longer be storing extension files without the file <p class="commentary">Nobody should any longer be storing extension files without the file
extension <span class="extract"><span class="extract-syntax">.i7x</span></span>, but this was allowed in the early days of Inform 7, extension <span class="extract"><span class="extract-syntax">.i7x</span></span>. This was allowed in the early days of Inform 7, and early
so we'll quietly allow for it. drafts of inblorb allowed it too, but this caused problems with emacs backup
files (with filenames ending <span class="extract"><span class="extract-syntax">~</span></span>) being picked up instead of the extension
files they were backing up. So inblorb now recognises only <span class="extract"><span class="extract-syntax">.i7x</span></span> files as
extensions.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -221,10 +224,15 @@ so we'll quietly allow for it.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionManager::search_nest_for_single_file</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="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionManager::search_nest_for_single_file</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="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_results</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-em.html#SP5" class="function-link"><span class="function-syntax">ExtensionManager::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="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fext</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">) &amp;&amp; (</span><a href="2-rqr.html#SP7" class="function-link"><span class="function-syntax">Requirements::meets</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">))) {</span> <span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::write_extension</span><span class="plain-syntax">(</span><span class="identifier-syntax">fext</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-nst.html#SP6" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</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">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">fext</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".i7x"</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-em.html#SP5" class="function-link"><span class="function-syntax">ExtensionManager::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">) &amp;&amp; (</span><a href="2-rqr.html#SP7" class="function-link"><span class="function-syntax">Requirements::meets</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><a href="2-nst.html#SP6" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fext</span><span class="plain-syntax">)</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. Copying. </b>Now the task is to copy an extension into place in a nest. This is easy, <p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. Copying. </b>Now the task is to copy an extension into place in a nest. This is easy,

View file

@ -109,8 +109,11 @@ in |req| has the same casing as in the subfolder name, so we go about this
cautiously for the sake of case-sensitive file systems. cautiously for the sake of case-sensitive file systems.
Nobody should any longer be storing extension files without the file Nobody should any longer be storing extension files without the file
extension |.i7x|, but this was allowed in the early days of Inform 7, extension |.i7x|. This was allowed in the early days of Inform 7, and early
so we'll quietly allow for it. drafts of inblorb allowed it too, but this caused problems with emacs backup
files (with filenames ending |~|) being picked up instead of the extension
files they were backing up. So inblorb now recognises only |.i7x| files as
extensions.
= =
void ExtensionManager::search_nest_for(inbuild_genre *gen, inbuild_nest *N, void ExtensionManager::search_nest_for(inbuild_genre *gen, inbuild_nest *N,
@ -155,10 +158,15 @@ void ExtensionManager::search_nest_for_r(pathname *P, inbuild_nest *N,
void ExtensionManager::search_nest_for_single_file(filename *F, inbuild_nest *N, void ExtensionManager::search_nest_for_single_file(filename *F, inbuild_nest *N,
inbuild_requirement *req, linked_list *search_results) { inbuild_requirement *req, linked_list *search_results) {
inbuild_copy *C = ExtensionManager::claim_file_as_copy(F); TEMPORARY_TEXT(fext)
if ((C) && (Requirements::meets(C->edition, req))) { Filenames::write_extension(fext, F);
Nests::add_search_result(search_results, N, C, req); if (Str::eq_insensitive(fext, I".i7x")) {
inbuild_copy *C = ExtensionManager::claim_file_as_copy(F);
if ((C) && (Requirements::meets(C->edition, req))) {
Nests::add_search_result(search_results, N, C, req);
}
} }
DISCARD_TEXT(fext)
} }
@h Copying. @h Copying.

View file

@ -1,47 +1,47 @@
Total memory consumption was 129430K = 126 MB Total memory consumption was 123347K = 120 MB
---- was used for 2044308 objects, in 362627 frames in 0 x 800K = 0K = 0 MB: ---- was used for 2044308 objects, in 362627 frames in 0 x 800K = 0K = 0 MB:
31.5% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes 33.1% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
19.5% text_stream_array 4603 x 100 = 460300 objects, 25924096 bytes 20.5% text_stream_array 4603 x 100 = 460300 objects, 25924096 bytes
18.3% linked_list 43446 objects, 24329760 bytes 19.2% linked_list 43446 objects, 24329760 bytes
10.6% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes 11.1% inter_symbol_array 132 x 1024 = 135168 objects, 14061696 bytes
9.9% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes 10.4% inter_error_stash_array 101 x 1024 = 103424 objects, 13241504 bytes
7.8% parse_node 129721 objects, 10377680 bytes 8.2% parse_node 129721 objects, 10377680 bytes
5.6% verb_conjugation 160 objects, 7425280 bytes 5.8% verb_conjugation 160 objects, 7425280 bytes
4.1% parse_node_annotation_array 346 x 500 = 173000 objects, 5547072 bytes 4.3% parse_node_annotation_array 346 x 500 = 173000 objects, 5547072 bytes
2.5% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes 2.6% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes
2.4% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes 2.5% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
1.9% kind_array 66 x 1000 = 66000 objects, 2642112 bytes 2.0% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
1.5% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes 1.6% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
1.5% inter_schema_token 13969 objects, 2011536 bytes 1.5% inter_schema_token 13969 objects, 2011536 bytes
1.4% package_request 21151 objects, 1861288 bytes 1.4% package_request 21151 objects, 1861288 bytes
1.3% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes 1.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
1.1% dict_entry_array 468 x 100 = 46800 objects, 1512576 bytes 1.1% dict_entry_array 468 x 100 = 46800 objects, 1512576 bytes
1.1% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes 1.1% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
1.1% inter_symbols_table 26588 objects, 1488928 bytes 1.1% inter_symbols_table 26588 objects, 1488928 bytes
1.0% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes 1.0% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
0.9% inter_package 26588 objects, 1276224 bytes 1.0% inter_package 26588 objects, 1276224 bytes
0.8% map_data 670 objects, 1125600 bytes 0.8% map_data 670 objects, 1125600 bytes
0.8% id_body 942 objects, 1077648 bytes 0.8% id_body 942 objects, 1077648 bytes
0.7% adjective_meaning 202 objects, 1000304 bytes 0.7% adjective_meaning 202 objects, 1000304 bytes
0.7% excerpt_meaning 3101 objects, 967512 bytes 0.7% excerpt_meaning 3101 objects, 967512 bytes
0.6% production 3877 objects, 899464 bytes 0.7% production 3877 objects, 899464 bytes
0.6% ptoken 8394 objects, 872976 bytes 0.6% ptoken 8394 objects, 872976 bytes
0.6% grammatical_usage 3612 objects, 866880 bytes 0.6% grammatical_usage 3612 objects, 866880 bytes
0.6% individual_form 2562 objects, 860832 bytes 0.6% individual_form 2562 objects, 860832 bytes
0.6% inter_schema_node 8920 objects, 856320 bytes 0.6% inter_schema_node 8920 objects, 856320 bytes
0.4% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes 0.5% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
0.3% scan_directory 116 objects, 478848 bytes 0.3% scan_directory 116 objects, 478848 bytes
0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes 0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
0.2% verb_usage 1128 objects, 388032 bytes 0.3% verb_usage 1128 objects, 388032 bytes
0.2% rule 470 objects, 368480 bytes 0.2% rule 470 objects, 368480 bytes
0.2% dictionary 7517 objects, 360816 bytes 0.2% dictionary 7517 objects, 360816 bytes
0.2% verb_form 386 objects, 348944 bytes 0.2% verb_form 386 objects, 348944 bytes
0.2% noun 2381 objects, 285720 bytes 0.2% noun 2381 objects, 285720 bytes
0.2% compilation_subtask 3349 objects, 267920 bytes 0.2% compilation_subtask 3349 objects, 267920 bytes
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes 0.2% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
0.1% inference_subject 665 objects, 260680 bytes 0.2% inference_subject 665 objects, 260680 bytes
0.1% vanilla_function 3682 objects, 235648 bytes 0.1% vanilla_function 3682 objects, 235648 bytes
0.1% binary_predicate 321 objects, 169488 bytes 0.1% binary_predicate 321 objects, 169488 bytes
0.1% hierarchy_location 1122 objects, 161568 bytes 0.1% hierarchy_location 1122 objects, 161568 bytes
@ -237,23 +237,23 @@ Total memory consumption was 129430K = 126 MB
100.0% was used for memory not allocated for objects: 100.0% was used for memory not allocated for objects:
59.7% text stream storage 79145104 bytes in 478305 claims 57.7% text stream storage 72916216 bytes in 477857 claims
3.9% dictionary storage 5227008 bytes in 7517 claims 4.1% dictionary storage 5227008 bytes in 7517 claims
---- sorting 1448 bytes in 149 claims ---- sorting 1448 bytes in 149 claims
5.4% source text 7200000 bytes in 3 claims 5.7% source text 7200000 bytes in 3 claims
8.1% source text details 10800000 bytes in 2 claims 8.5% source text details 10800000 bytes in 2 claims
0.1% documentation fragments 262144 bytes in 1 claim 0.2% documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims ---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims ---- small word set array 105600 bytes in 22 claims
3.4% inter symbols storage 4518768 bytes in 27943 claims 3.5% inter symbols storage 4518768 bytes in 27943 claims
12.6% inter bytecode storage 16766024 bytes in 14 claims 13.2% inter bytecode storage 16766024 bytes in 14 claims
4.6% inter links storage 6222976 bytes in 11 claims 4.9% inter links storage 6222976 bytes in 11 claims
0.1% inter tree location list storage 191232 bytes in 32 claims 0.1% inter tree location list storage 191232 bytes in 32 claims
1.2% instance-of-kind counting 1695204 bytes in 1 claim 1.3% instance-of-kind counting 1695204 bytes in 1 claim
---- compilation workspace for objects 21856 bytes in 25 claims ---- compilation workspace for objects 21856 bytes in 25 claims
---- lists for type-checking invocations 16000 bytes in 1 claim ---- lists for type-checking invocations 16000 bytes in 1 claim
---- code generation workspace for objects 1336 bytes in 4 claims ---- code generation workspace for objects 1336 bytes in 4 claims
0.2% emitter array storage 280032 bytes in 1997 claims 0.2% emitter array storage 280032 bytes in 1997 claims
-138.-6% was overhead - -183807336 bytes = -179499K = -175 MB -145.-5% was overhead - -183807336 bytes = -179499K = -175 MB

View file

@ -1,32 +1,33 @@
100.0% in inform7 run 100.0% in inform7 run
71.0% in compilation to Inter 71.2% in compilation to Inter
50.1% in //Sequence::undertake_queued_tasks// 50.7% in //Sequence::undertake_queued_tasks//
4.2% in //MajorNodes::pre_pass// 4.4% in //MajorNodes::pre_pass//
3.4% in //MajorNodes::pass_1// 3.4% in //MajorNodes::pass_1//
2.4% in //RTPhrasebook::compile_entries// 2.0% in //RTPhrasebook::compile_entries//
1.8% in //ImperativeDefinitions::assess_all// 1.8% in //ImperativeDefinitions::assess_all//
1.4% in //RTKindConstructors::compile// 1.6% in //RTKindConstructors::compile//
1.0% in //Sequence::lint_inter// 1.0% in //Sequence::lint_inter//
0.6% in //MajorNodes::pass_2// 0.6% in //MajorNodes::pass_2//
0.6% in //Sequence::undertake_queued_tasks//
0.6% in //World::stage_V// 0.6% in //World::stage_V//
0.4% in //ImperativeDefinitions::compile_first_block// 0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //Sequence::undertake_queued_tasks// 0.4% in //Sequence::undertake_queued_tasks//
0.4% in //Sequence::undertake_queued_tasks//
0.2% in //CompletionModule::compile// 0.2% in //CompletionModule::compile//
0.2% in //InferenceSubjects::emit_all// 0.2% in //InferenceSubjects::emit_all//
0.2% in //RTKindConstructors::compile_permissions// 0.2% in //RTKindConstructors::compile_permissions//
0.2% in //Task::make_built_in_kind_constructors// 0.2% in //Task::make_built_in_kind_constructors//
3.2% not specifically accounted for 0.2% in //World::stages_II_and_III//
26.0% in running Inter pipeline 2.6% not specifically accounted for
10.1% in step 14/15: generate inform6 -> auto.inf 25.9% in running Inter pipeline
5.9% in step 6/15: make-synoptic-module 10.2% in step 14/15: generate inform6 -> auto.inf
5.4% in step 5/15: load-binary-kits 5.6% in step 5/15: load-binary-kits
5.4% in step 6/15: make-synoptic-module
1.4% in step 9/15: make-identifiers-unique 1.4% in step 9/15: make-identifiers-unique
0.4% in step 12/15: eliminate-redundant-operations 0.4% in step 12/15: eliminate-redundant-operations
0.4% in step 4/15: compile-splats 0.4% in step 4/15: compile-splats
0.4% in step 7/15: shorten-wiring 0.4% in step 7/15: shorten-wiring
0.4% in step 8/15: detect-indirect-calls 0.4% in step 8/15: detect-indirect-calls
0.2% in step 11/15: eliminate-redundant-labels 0.2% in step 11/15: eliminate-redundant-labels
1.2% not specifically accounted for 1.4% not specifically accounted for
2.4% in supervisor 2.4% in supervisor
0.5% not specifically accounted for 0.5% not specifically accounted for