From fce5a28aef469fcc8d01b88a6561d54384fc6a5c Mon Sep 17 00:00:00 2001 From: Graham Nelson Date: Sun, 15 May 2022 22:38:57 +0100 Subject: [PATCH] Inbuild now ignores candidate extensions whose filenames begin with "." --- docs/BasicInformKit/S-blc.html | 10 +-- docs/BasicInformKit/S-chr.html | 10 +-- docs/BasicInformKit/S-cmb.html | 10 +-- docs/BasicInformKit/S-dfn.html | 10 +-- docs/BasicInformKit/S-fl.html | 10 +-- docs/BasicInformKit/S-flx.html | 10 +-- docs/BasicInformKit/S-gll.html | 10 +-- docs/BasicInformKit/S-lst.html | 10 +-- docs/BasicInformKit/S-mst.html | 10 +-- docs/BasicInformKit/S-mth.html | 10 +-- docs/BasicInformKit/S-prg.html | 10 +-- docs/BasicInformKit/S-rgx.html | 10 +-- docs/BasicInformKit/S-rlb.html | 10 +-- docs/BasicInformKit/S-rlt.html | 23 ++---- docs/BasicInformKit/S-rlt2.html | 10 +-- docs/BasicInformKit/S-rtp.html | 10 +-- docs/BasicInformKit/S-srt.html | 10 +-- docs/BasicInformKit/S-tbl.html | 10 +-- docs/BasicInformKit/S-txt.html | 10 +-- docs/BasicInformKit/S-unc.html | 10 +-- docs/BasicInformKit/S-utl.html | 10 +-- docs/BasicInformKit/S-zmc.html | 10 +-- docs/BasicInformKit/index.html | 10 +-- docs/core-module/2-pwst.html | 10 +-- docs/inbuild/1-mn.html | 2 +- docs/inbuild/M-ui.html | 2 +- docs/inform7/1-mn.html | 3 + docs/inform7/M-pm.html | 33 ++++---- docs/inform7/preform-diagnostics.txt | 80 +++++++++---------- docs/kinds-module/2-knd.html | 7 +- docs/kinds-module/2-tlok.html | 44 ++++++---- docs/kinds-module/2-uk.html | 9 +-- docs/kinds-module/4-kc2.html | 2 +- docs/lexicon-module/P-wtmd.html | 12 +-- docs/pipeline-module/3-ps.html | 3 + docs/runtime-module/5-rlt.html | 3 +- docs/secrets.html | 2 +- docs/standard_rules/S-var.html | 2 +- docs/supervisor-module/4-em.html | 6 +- .../Chapter 4/Extension Manager.w | 6 +- inform7/Downloads/preform-diagnostics.txt | 80 +++++++++---------- inform7/Figures/timings-diagnostics.txt | 37 ++++----- .../Figures/excerpts-diagnostics.txt | 12 +-- 43 files changed, 299 insertions(+), 299 deletions(-) diff --git a/docs/BasicInformKit/S-blc.html b/docs/BasicInformKit/S-blc.html index 9712956fa..ea1367b08 100644 --- a/docs/BasicInformKit/S-blc.html +++ b/docs/BasicInformKit/S-blc.html @@ -31,10 +31,10 @@ MathJax = {
+

Routines for copying, comparing, creating and destroying block values, and for reading and writing them as if they were arrays.


diff --git a/docs/BasicInformKit/S-chr.html b/docs/BasicInformKit/S-chr.html index 64742466d..bba7475cb 100644 --- a/docs/BasicInformKit/S-chr.html +++ b/docs/BasicInformKit/S-chr.html @@ -31,10 +31,10 @@ MathJax = {
+

To decide whether letters are upper or lower case, and convert between the two.


diff --git a/docs/BasicInformKit/S-cmb.html b/docs/BasicInformKit/S-cmb.html index c493e7a10..932c054b7 100644 --- a/docs/BasicInformKit/S-cmb.html +++ b/docs/BasicInformKit/S-cmb.html @@ -31,10 +31,10 @@ MathJax = {
+

Code to support the combination kind of value constructor.


diff --git a/docs/BasicInformKit/S-dfn.html b/docs/BasicInformKit/S-dfn.html index 4889881b6..b4466422c 100644 --- a/docs/BasicInformKit/S-dfn.html +++ b/docs/BasicInformKit/S-dfn.html @@ -31,10 +31,10 @@ MathJax = {
+

Miscellaneous constant definitions, usually providing symbolic names for otherwise inscrutable numbers, which are used throughout the template layer.


diff --git a/docs/BasicInformKit/S-fl.html b/docs/BasicInformKit/S-fl.html index b8ed85c4d..6718ffa0c 100644 --- a/docs/BasicInformKit/S-fl.html +++ b/docs/BasicInformKit/S-fl.html @@ -17,10 +17,10 @@
+

Reading and writing external files, in the Glulx virtual machine only.


diff --git a/docs/BasicInformKit/S-flx.html b/docs/BasicInformKit/S-flx.html index 47b64a318..30ca0a274 100644 --- a/docs/BasicInformKit/S-flx.html +++ b/docs/BasicInformKit/S-flx.html @@ -31,10 +31,10 @@ MathJax = {
+

To allocate flexible-sized blocks of memory as needed to hold arbitrary-length strings of text, stored actions or other block values.


diff --git a/docs/BasicInformKit/S-gll.html b/docs/BasicInformKit/S-gll.html index 83ef34e66..a43696a29 100644 --- a/docs/BasicInformKit/S-gll.html +++ b/docs/BasicInformKit/S-gll.html @@ -31,10 +31,10 @@ MathJax = {
+

To start up the Glk interface for the Glulx virtual machine, and provide Glulx-specific printing functions.


diff --git a/docs/BasicInformKit/S-lst.html b/docs/BasicInformKit/S-lst.html index c7a1045c3..ba551947a 100644 --- a/docs/BasicInformKit/S-lst.html +++ b/docs/BasicInformKit/S-lst.html @@ -31,10 +31,10 @@ MathJax = {
+

Code to support the list of... kind of value constructor.


diff --git a/docs/BasicInformKit/S-mst.html b/docs/BasicInformKit/S-mst.html index 99e8dcfd6..f9665b1b1 100644 --- a/docs/BasicInformKit/S-mst.html +++ b/docs/BasicInformKit/S-mst.html @@ -31,10 +31,10 @@ MathJax = {
+

To allocate space on the memory stack for frames of variables to be used by rulebooks, activities and actions.


diff --git a/docs/BasicInformKit/S-mth.html b/docs/BasicInformKit/S-mth.html index 4aa687350..0ffe15de5 100644 --- a/docs/BasicInformKit/S-mth.html +++ b/docs/BasicInformKit/S-mth.html @@ -31,10 +31,10 @@ MathJax = {
+

Mathematical functions, especially for real numbers.


diff --git a/docs/BasicInformKit/S-prg.html b/docs/BasicInformKit/S-prg.html index db3bf1fae..66a7c1716 100644 --- a/docs/BasicInformKit/S-prg.html +++ b/docs/BasicInformKit/S-prg.html @@ -17,10 +17,10 @@
+

To manage the line skips which space paragraphs out.


diff --git a/docs/BasicInformKit/S-rgx.html b/docs/BasicInformKit/S-rgx.html index e8948b7a4..266c85b3c 100644 --- a/docs/BasicInformKit/S-rgx.html +++ b/docs/BasicInformKit/S-rgx.html @@ -31,10 +31,10 @@ MathJax = {
+

Code to match and replace on regular expressions against indexed text strings.


diff --git a/docs/BasicInformKit/S-rlb.html b/docs/BasicInformKit/S-rlb.html index 123602976..ee41d7a1b 100644 --- a/docs/BasicInformKit/S-rlb.html +++ b/docs/BasicInformKit/S-rlb.html @@ -31,10 +31,10 @@ MathJax = {
+

To work through the rules in a rulebook until a decision is made.


diff --git a/docs/BasicInformKit/S-rlt.html b/docs/BasicInformKit/S-rlt.html index 62aae571f..5afe9112b 100644 --- a/docs/BasicInformKit/S-rlt.html +++ b/docs/BasicInformKit/S-rlt.html @@ -31,10 +31,10 @@ MathJax = {
+

Code to support the relation kind.


@@ -224,7 +224,7 @@ operations it does offer.

-[ RelationTest relation task X Y  handler rv;
+[ RelationTest relation task X Y  handler;
     handler = RlnGetF(relation, RR_HANDLER);
     return handler(relation, task, X, Y);
 ];
@@ -1016,7 +1016,7 @@ the existing pair \((X, Y)\).
             if (fl & RRF_USED) {
                 sym = BlkValueRead(rel, tmp + 2);
                 if (fl & RRF_SINGLE) {
-                    if (KOVIsBlockValue(ky)) {
+                    if (KOVIsBlockValue(kx)) {
                         if (BlkValueCompare(X, sym) ~= 0) continue;
                     } else {
                         if (X ~= sym) continue;
@@ -1197,20 +1197,16 @@ the existing pair \((X, Y)\).
 ];
 
 [ HashCoreLookUp rel kx X  hashv i free mask perturb flags;
-rint "[HCLU rel=", rel, " kx=", kx, " X=", X, ": ";
     calculate a hash value for the key
     hashv = GetHashValue(kx, X);
     look in the first expected slot
     mask = BlkValueRead(rel, RRV_STORAGE);
     i = hashv & mask;
-rint "hv=", hashv, ", trying ", i;
     flags = BlkValueRead(rel, RRV_DATA_BASE + 3*i);
     if (flags == 0) {
-rint " - not found]^";
         return ~i;
     }
     if (HashCoreEntryMatches(rel, i, kx, X)) {
-rint " - found]^";
         return i;
     }
     not here, keep looking in sequence
@@ -1221,15 +1217,12 @@ the existing pair \((X, Y)\).
     for (::) {
         hashv = hashv*5 + perturb + 1;
         i = hashv & mask;
-rint ", ", i;
         flags = BlkValueRead(rel, RRV_DATA_BASE + 3*i);
         if (flags == 0) {
-rint " - not found]^";
             if (free >= 0) return ~free;
             return ~i;
         }
         if (HashCoreEntryMatches(rel, i, kx, X)) {
-rint " - found]^";
             return i;
         }
         if ((free < 0) && (flags & RRF_DELETED)) free = i;
@@ -1259,7 +1252,7 @@ the existing pair \((X, Y)\).
             BlkValueWrite(rel, RRV_DATA_BASE+i, 0);
         copy entries back from temporary space
         kov = BlkValueRead(rel, RRV_KIND);
-        kx = KindBaseTerm(kov, 0);
+        kx = KindBaseTerm(kov, 1); Was 0
         for (i=0: i<ext: i++) {
             F = BlkValueRead(temp, 3*i, true);
             if (F == 0 || (F & RRF_DELETED)) continue;
diff --git a/docs/BasicInformKit/S-rlt2.html b/docs/BasicInformKit/S-rlt2.html
index a2c65617f..cef2230ec 100644
--- a/docs/BasicInformKit/S-rlt2.html
+++ b/docs/BasicInformKit/S-rlt2.html
@@ -31,10 +31,10 @@ MathJax = {
 	
 	
 		
 		
+

To manage run-time storage for relations between objects, and to find routes through relations and the map.


diff --git a/docs/BasicInformKit/S-rtp.html b/docs/BasicInformKit/S-rtp.html index deca40476..29381d8a9 100644 --- a/docs/BasicInformKit/S-rtp.html +++ b/docs/BasicInformKit/S-rtp.html @@ -17,10 +17,10 @@
+

To issue run-time problem messages, and to perform some run-time type checking which may issue such messages.


diff --git a/docs/BasicInformKit/S-srt.html b/docs/BasicInformKit/S-srt.html index 6c57bb767..44562fc6e 100644 --- a/docs/BasicInformKit/S-srt.html +++ b/docs/BasicInformKit/S-srt.html @@ -31,10 +31,10 @@ MathJax = {
+

To sort arrays.


diff --git a/docs/BasicInformKit/S-tbl.html b/docs/BasicInformKit/S-tbl.html index 2df3edc93..a9cb42d33 100644 --- a/docs/BasicInformKit/S-tbl.html +++ b/docs/BasicInformKit/S-tbl.html @@ -31,10 +31,10 @@ MathJax = {
+

To read, write, search and allocate rows in the Table data structure.


diff --git a/docs/BasicInformKit/S-txt.html b/docs/BasicInformKit/S-txt.html index c0cac259c..5ee2d5f71 100644 --- a/docs/BasicInformKit/S-txt.html +++ b/docs/BasicInformKit/S-txt.html @@ -17,10 +17,10 @@
+

Code to support the text kind of value.


diff --git a/docs/BasicInformKit/S-unc.html b/docs/BasicInformKit/S-unc.html index 8e7ed1e61..1e6b6aea5 100644 --- a/docs/BasicInformKit/S-unc.html +++ b/docs/BasicInformKit/S-unc.html @@ -31,10 +31,10 @@ MathJax = {
+

To tabulate casings in the character set.


diff --git a/docs/BasicInformKit/S-utl.html b/docs/BasicInformKit/S-utl.html index 4ebb5dadd..ab0e1fa27 100644 --- a/docs/BasicInformKit/S-utl.html +++ b/docs/BasicInformKit/S-utl.html @@ -31,10 +31,10 @@ MathJax = {
+

Miscellaneous utility routines for some fundamental I6 needs.


diff --git a/docs/BasicInformKit/S-zmc.html b/docs/BasicInformKit/S-zmc.html index 18967d11f..8dd20b92b 100644 --- a/docs/BasicInformKit/S-zmc.html +++ b/docs/BasicInformKit/S-zmc.html @@ -31,10 +31,10 @@ MathJax = {
+

To provide routines handling low-level Z-machine facilities.


diff --git a/docs/BasicInformKit/index.html b/docs/BasicInformKit/index.html index b275928de..c475874a3 100644 --- a/docs/BasicInformKit/index.html +++ b/docs/BasicInformKit/index.html @@ -15,10 +15,10 @@
- +

Inter-level support for the fundamentals of the Inform language. This is version 1.


diff --git a/docs/core-module/2-pwst.html b/docs/core-module/2-pwst.html index 9221bbab7..193506aae 100644 --- a/docs/core-module/2-pwst.html +++ b/docs/core-module/2-pwst.html @@ -362,10 +362,7 @@ group. Problems::quote_source(1, current_sentence); StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_BogusExtension)); Problems::issue_problem_segment( - "I can't find the extension requested by: %1. %P" - "You can get hold of extensions which people have made public at " - "the Inform website, www.inform7.com, or by using the Public " - "Library in the Extensions panel."); + "I can't find the extension requested by: %1."); Problems::issue_problem_end(); break; case ExtVersionTooLow_SYNERROR: @@ -375,10 +372,7 @@ group. StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_ExtVersionTooLow)); Problems::issue_problem_segment( "I can't find the right version of the extension requested by %1 - " - "I can only find %2. %P" - "You can get hold of extensions which people have made public at " - "the Inform website, www.inform7.com, or by using the Public " - "Library in the Extensions panel."); + "I can only find %2."); Problems::issue_problem_end(); break; case ExtVersionMalformed_SYNERROR: diff --git a/docs/inbuild/1-mn.html b/docs/inbuild/1-mn.html index 15ad1d927..540bd6353 100644 --- a/docs/inbuild/1-mn.html +++ b/docs/inbuild/1-mn.html @@ -331,7 +331,7 @@ the order in which filenames are read from a directory listing. } void Main::add_directory_contents_targets(pathname *P) { - linked_list *L = Directories::listing(P); + linked_list *L = Directories::listing(P); text_stream *entry; LOOP_OVER_LINKED_LIST(entry, text_stream, L) { TEMPORARY_TEXT(FILENAME) diff --git a/docs/inbuild/M-ui.html b/docs/inbuild/M-ui.html index b29895c5f..5d26649a0 100644 --- a/docs/inbuild/M-ui.html +++ b/docs/inbuild/M-ui.html @@ -143,7 +143,7 @@ the software, but it's still helpful. to other copies. It gives a systematic answer to the question "how do I build or use this?". There are two kinds of arrows, use arrows and build arrows. A use arrow from A to B means that you need to have B installed -in order to be able to use A. The above example, then, tells us that we +in order to be able to use A. The above example, then, tells us that we need Menus in order to use Basic Help Menu, and we need Basic Screen Effects in order to use Menus.

diff --git a/docs/inform7/1-mn.html b/docs/inform7/1-mn.html index a5e5f0820..0457b8798 100644 --- a/docs/inform7/1-mn.html +++ b/docs/inform7/1-mn.html @@ -466,6 +466,9 @@ rather than corevoid Main::bareword(int id, text_stream *opt, void *state) { if (Str::is_whitespace(opt) == FALSE) { + if (Str::get_last_char(opt) == FOLDER_SEPARATOR) + Errors::fatal_with_text( + "to compile a project in a directory, use '-project %S'", opt); filename *F = Filenames::from_text(opt); if (Supervisor::set_I7_source(F) == FALSE) Errors::fatal_with_text("unknown command line argument: %S (see -help)", opt); diff --git a/docs/inform7/M-pm.html b/docs/inform7/M-pm.html index 03aea1e21..704e52c6e 100644 --- a/docs/inform7/M-pm.html +++ b/docs/inform7/M-pm.html @@ -70,34 +70,35 @@ which take more than 1/1000th of the total running time.
 100.0% in inform7 run
-     71.8% in compilation to Inter
-         51.2% in Sequence::undertake_queued_tasks
-          4.6% in MajorNodes::pre_pass
-          3.4% in MajorNodes::pass_1
+     71.1% in compilation to Inter
+         50.3% in Sequence::undertake_queued_tasks
+          4.7% in MajorNodes::pre_pass
+          3.5% in MajorNodes::pass_1
           1.8% in ImperativeDefinitions::assess_all
           1.8% in RTPhrasebook::compile_entries
           1.4% in RTKindConstructors::compile
           1.0% in Sequence::lint_inter
           0.6% in MajorNodes::pass_2
-          0.6% in Sequence::undertake_queued_tasks
           0.6% in World::stage_V
           0.4% in ImperativeDefinitions::compile_first_block
           0.4% in Sequence::undertake_queued_tasks
+          0.4% in Sequence::undertake_queued_tasks
           0.2% in CompletionModule::compile
           0.2% in InferenceSubjects::emit_all
           0.2% in RTKindConstructors::compile_permissions
-          3.4% not specifically accounted for
-     25.5% in running Inter pipeline
-         10.0% in step 14/15: generate inform6 -> auto.inf
+          0.2% in Task::make_built_in_kind_constructors
+          3.0% not specifically accounted for
+     26.1% in running Inter pipeline
+          9.9% in step 14/15: generate inform6 -> auto.inf
+          6.0% in step 6/15: make-synoptic-module
           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
           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
-          1.3% not specifically accounted for
+          0.2% in step 8/15: detect-indirect-calls
+          1.4% not specifically accounted for
       2.2% in supervisor
       0.5% not specifically accounted for
 
@@ -110,14 +111,14 @@ represent less than 1/1000th of the total.
 Total memory consumption was 123345K = 120 MB
 
- ---- was used for 2044307 objects, in 362626 frames in 0 x 800K = 0K = 0 MB:
+ ---- was used for 2044504 objects, in 362823 frames in 0 x 800K = 0K = 0 MB:
 
     33.1%  inter_tree_node_array                    58 x 8192 = 475136 objects, 41813824 bytes
     20.5%  text_stream_array                        4603 x 100 = 460300 objects, 25924096 bytes
     19.2%  linked_list                              43446 objects, 24329760 bytes
     11.1%  inter_symbol_array                       132 x 1024 = 135168 objects, 14061696 bytes
     10.4%  inter_error_stash_array                  101 x 1024 = 103424 objects, 13241504 bytes
-     8.2%  parse_node                               129721 objects, 10377680 bytes
+     8.2%  parse_node                               129720 objects, 10377600 bytes
      5.8%  verb_conjugation                         160 objects, 7425280 bytes
      4.3%  parse_node_annotation_array              346 x 500 = 173000 objects, 5547072 bytes
      2.6%  pcalc_prop_array                         25 x 1000 = 25000 objects, 3400800 bytes
@@ -131,6 +132,7 @@ represent less than 1/1000th of the total.
      1.1%  match_trie_array                         11 x 1000 = 11000 objects, 1496352 bytes
      1.1%  inter_symbols_table                      26588 objects, 1488928 bytes
      1.0%  i6_schema_array                          23 x 100 = 2300 objects, 1380736 bytes
+     1.0%  scan_directory                           314 objects, 1296192 bytes
      1.0%  inter_package                            26588 objects, 1276224 bytes
      0.8%  map_data                                 670 objects, 1125600 bytes
      0.8%  id_body                                  942 objects, 1077648 bytes
@@ -142,7 +144,6 @@ represent less than 1/1000th of the total.
      0.6%  individual_form                          2562 objects, 860832 bytes
      0.6%  inter_schema_node                        8920 objects, 856320 bytes
      0.5%  unary_predicate_array                    16 x 1000 = 16000 objects, 640512 bytes
-     0.3%  scan_directory                           116 objects, 478848 bytes
      0.3%  local_variable_array                     47 x 100 = 4700 objects, 452704 bytes
      0.3%  verb_usage                               1128 objects, 388032 bytes
      0.2%  rule                                     470 objects, 368480 bytes
@@ -347,7 +348,7 @@ represent less than 1/1000th of the total.
 
 100.0% was used for memory not allocated for objects:
 
-    57.7%  text stream storage                      72913024 bytes in 477844 claims
+    57.7%  text stream storage                      72912928 bytes in 477842 claims
      4.1%  dictionary storage                       5227008 bytes in 7517 claims
      ----  sorting                                  1448 bytes in 149 claims
      5.7%  source text                              7200000 bytes in 3 claims
@@ -365,7 +366,7 @@ represent less than 1/1000th of the total.
      ----  code generation workspace for objects    1336 bytes in 4 claims
      0.2%  emitter array storage                    280032 bytes in 1997 claims
 
--145.-5% was overhead - -183807584 bytes = -179499K = -175 MB
+-146.-1% was overhead - -184624848 bytes = -180297K = -176 MB
 

§4. Preform grammar. The full annotated description of the Preform grammar (see About Preform (in words)), with optimisation details and hit/miss statistics added, is also long: it's diff --git a/docs/inform7/preform-diagnostics.txt b/docs/inform7/preform-diagnostics.txt index 527718ab7..5dbfa6089 100644 --- a/docs/inform7/preform-diagnostics.txt +++ b/docs/inform7/preform-diagnostics.txt @@ -4764,21 +4764,21 @@ {...} constraint (none) extremes [1, infinity) - hits 83030/166060 nti 15 constraint (none) extremes [1, infinity) + hits 83029/166058 nti 15 constraint (none) extremes [1, infinity) English:

{...} - (hits 16068/47449) (matched long text) constraint (none) extremes [2, infinity) + (hits 16068/47448) (matched long text) constraint (none) extremes [2, infinity) {...} - (hits 66962/66962) (matched long text) constraint (none) extremes [1, infinity) + (hits 66961/66961) (matched long text) constraint (none) extremes [1, infinity) nti 16 constraint (none) extremes [2, infinity) English:
{...} constraint (none) extremes [2, infinity) -
internal hits 16522/98958 nti r2 constraint (none) extremes [1, 1] +
internal hits 16522/98954 nti r2 constraint (none) extremes [1, 1] - internal hits 20353/236436 nti r2 constraint (none) extremes [1, 1] + internal hits 20353/236434 nti r2 constraint (none) extremes [1, 1] internal hits 2350/41386 nti r2 constraint (none) extremes [1, 1] @@ -5055,7 +5055,7 @@ {...} (hits 99/2082) (matched: '"(considering the first sixteen objects only)[command clarification break]" ( a )') constraint (none) extremes [1, infinity) - (hits 322/1418) (matched long text) constraint (none) extremes [2, infinity) + (hits 322/1418) (matched: 'an action based rule producing nothing that varies') constraint (none) extremes [2, infinity) (hits 661/1096) (matched long text) constraint (none) extremes [2, infinity) @@ -5185,16 +5185,16 @@ (hits 431/431) (matched long text) constraint (none) extremes [1, infinity) - hits 0/10194 nti 30 constraint DS = {30} extremes [2, infinity) + hits 0/10192 nti 30 constraint DS = {30} extremes [2, infinity) English: it with action {***} - (hits 0/3875) constraint DS = {30} extremes [3, infinity) + (hits 0/3874) constraint DS = {30} extremes [3, infinity) {with/having} (/) {***} - (hits 0/4068) constraint DS = {30} extremes [2, infinity) + (hits 0/4067) constraint DS = {30} extremes [2, infinity) {with/having} {...} ( ) - (hits 0/3483) constraint DS = {30} extremes [5, infinity) + (hits 0/3482) constraint DS = {30} extremes [5, infinity) {with/having} - (hits 0/4068) constraint DS = {30} extremes [2, infinity) + (hits 0/4067) constraint DS = {30} extremes [2, infinity) nti 19 constraint (none) extremes [1, infinity) English: @@ -5217,12 +5217,12 @@ {...} constraint (none) extremes [1, infinity) - hits 174/3554 nti 6 constraint DS = {6} extremes [1, infinity) + hits 174/3552 nti 6 constraint DS = {6} extremes [1, infinity) English: , _{and} - (hits 8/1080) (matched: ', and didn't understand addressee's last name error') constraint DS = {6} extremes [2, infinity) + (hits 8/1079) (matched: ', and didn't understand addressee's last name error') constraint DS = {6} extremes [2, infinity) _{,/and} - (hits 166/1278) (matched long text) constraint DS = {6} extremes [1, infinity) + (hits 166/1277) (matched long text) constraint DS = {6} extremes [1, infinity) hits 30/516 nti 21 constraint DS = {7} extremes [1, infinity) English: @@ -5267,7 +5267,7 @@ {...} called {...} constraint DS = {12} extremes [3, infinity) - hits 196/9062 nti 13 constraint DS = {13} extremes [2, infinity) + hits 196/9056 nti 13 constraint DS = {13} extremes [2, infinity) English: of {...} (hits 196/2552) (matched: 'of day -- documented at var_time --') constraint DS = {13} extremes [2, infinity) @@ -5285,7 +5285,7 @@ grammatical case (hits 1/1) (matched: 'grammatical case') constraint CS = {14} extremes [2, 2] - internal hits 2478/41948 nti 27 constraint (none) extremes [0, 0] + internal hits 2478/41944 nti 27 constraint (none) extremes [0, 0] internal hits 165/330 nti 28 constraint (none) extremes [1, infinity) @@ -5311,16 +5311,16 @@ (hits 5/5) (matched: 'value of kind k') constraint (none) extremes [1, infinity) - hits 5803/103678 nti r5 constraint (none) extremes [1, infinity) + hits 5802/103676 nti r5 constraint (none) extremes [1, infinity) English: ( ) (hits 0/2047) constraint DS = {r5} & CW = {r2, r5} extremes [3, infinity) ^ - (hits 1592/11283) (matched: 'k') constraint CW = {r2, r5} extremes [1, infinity) + (hits 1592/11282) (matched: 'k') constraint CW = {r2, r5} extremes [1, infinity) - (hits 201/9691) (matched: 'sayable value of kind k') constraint CW = {r2, r5} extremes [1, infinity) + (hits 201/9690) (matched: 'sayable value of kind k') constraint CW = {r2, r5} extremes [1, infinity) - (hits 3649/9490) (matched: 'an ice cream cone') constraint CW = {r2, r5} extremes [1, infinity) + (hits 3648/9489) (matched: 'an ice cream cone') constraint CW = {r2, r5} extremes [1, infinity) (hits 2/16024) (matched: 'object-based rulebook') constraint DS = {r5} extremes [2, infinity) @@ -5340,7 +5340,7 @@ of kind (hits 81/315) (matched: 'sayable value of kind k') constraint DS = {r5} & CW = {r2, r5} extremes [4, infinity) - internal hits 3649/18980 nti r5 constraint CW = {r2, r5} extremes [1, infinity) + internal hits 3648/18978 nti r5 constraint CW = {r2, r5} extremes [1, infinity) hits 2/32048 nti r5 constraint DS = {r5} extremes [2, infinity) English: @@ -5387,13 +5387,13 @@ ( ) (hits 0/21) constraint DS = {r5} extremes [3, infinity)
- (hits 9/28) (matched: 'a value of kind k') constraint (none) extremes [2, infinity) + (hits 9/27) (matched: 'a value of kind k') constraint (none) extremes [2, infinity) nothing - (hits 14/34) (matched: 'nothing') constraint CS = {r5} extremes [1, 1] + (hits 14/35) (matched: 'nothing') constraint CS = {r5} extremes [1, 1] action - (hits 0/20) constraint CS = {r5} extremes [1, 1] + (hits 1/21) (matched: 'action') constraint CS = {r5} extremes [1, 1] - (hits 39/39) (matched: 'value of kind k') constraint (none) extremes [1, infinity) + (hits 38/38) (matched: 'value of kind k') constraint (none) extremes [1, infinity) hits 15/30 nti r5 constraint (none) extremes [1, infinity) English: @@ -5416,7 +5416,7 @@ (hits 100/224) (matched: 'sayable value') constraint (none) extremes [1, infinity) - internal hits 1592/20088 nti r5 constraint CW = {r2, r5} extremes [1, 1] + internal hits 1592/20086 nti r5 constraint CW = {r2, r5} extremes [1, 1] internal hits 220/1418 nti r5 constraint CW = {r2, r5} extremes [1, 1] @@ -6677,7 +6677,7 @@ action of (hits 0/65) constraint DS = {24} extremes [3, infinity) - (hits 728/978) (matched: 'action name based rule producing nothing that varies') constraint (none) extremes [1, infinity) + (hits 728/978) (matched: 'action based rule producing nothing that varies') constraint (none) extremes [1, infinity) (hits 6/250) (matched: 'language of play') constraint (none) extremes [1, infinity) @@ -7969,7 +7969,7 @@ variable/variables (hits 2/350) (matched: 'text variables') constraint DS = {11} extremes [2, infinity) that/which vary/varies - (hits 59/287) (matched: 'action name based rule producing nothing that varies') constraint DS = {11} extremes [3, infinity) + (hits 59/287) (matched: 'action based rule producing nothing that varies') constraint DS = {11} extremes [3, infinity) (hits 2445/3832) (matched long text) constraint (none) extremes [1, infinity) @@ -8009,12 +8009,12 @@ global (hits 0/4) constraint DS = {10} extremes [2, infinity) - (hits 61/62) (matched: 'action name based rule producing nothing') constraint (none) extremes [1, infinity) + (hits 61/62) (matched: 'action based rule producing nothing') constraint (none) extremes [1, infinity) hits 61/124 nti 18 constraint (none) extremes [1, infinity) English: - (hits 61/62) (matched: 'action name based rule producing nothing') constraint (none) extremes [1, infinity) + (hits 61/62) (matched: 'action based rule producing nothing') constraint (none) extremes [1, infinity) (hits 0/1) constraint (none) extremes [1, infinity) @@ -9061,31 +9061,31 @@ waiting (hits 1/20) (matched: 'waiting') constraint CS = {13} extremes [1, 1] - hits 90/1036 nti 24 constraint DS = {14} extremes [1, infinity) + hits 91/1036 nti 24 constraint DS = {14} extremes [1, infinity) English: - (hits 90/334) (matched long text) constraint DS = {14} extremes [2, infinity) + (hits 91/334) (matched long text) constraint DS = {14} extremes [2, infinity) - (hits 0/244) constraint DS = {14} extremes [1, infinity) + (hits 0/243) constraint DS = {14} extremes [1, infinity) - hits 90/934 nti 14 constraint DS = {14} extremes [1, infinity) + hits 91/932 nti 14 constraint DS = {14} extremes [1, infinity) English: action based {...} - (hits 0/338) constraint DS = {14} extremes [3, infinity) + (hits 1/337) (matched: 'action based rule producing nothing that varies') constraint DS = {14} extremes [3, infinity) action - (hits 90/388) (matched long text) constraint DS = {14} extremes [1, infinity) + (hits 90/386) (matched long text) constraint DS = {14} extremes [1, infinity) action constraint CS = {14} extremes [1, 1] - hits 90/182 nti 25 constraint (none) extremes [0, infinity) + hits 90/180 nti 25 constraint (none) extremes [0, infinity) English: ^ - (hits 90/91) (matched long text) constraint (none) extremes [0, infinity) + (hits 90/90) (matched long text) constraint (none) extremes [0, infinity) - hits 1/182 nti 15 constraint DS = {15} extremes [1, infinity) + hits 0/180 nti 15 constraint DS = {15} extremes [1, infinity) English: {***} that/which vary/varies - (hits 1/91) (matched: 'name based rule producing nothing that varies') constraint DS = {15} extremes [2, infinity) + (hits 0/90) constraint DS = {15} extremes [2, infinity) {***} variable (hits 0/90) constraint DS = {15} extremes [1, infinity) diff --git a/docs/kinds-module/2-knd.html b/docs/kinds-module/2-knd.html index a8453678b..1220fea1d 100644 --- a/docs/kinds-module/2-knd.html +++ b/docs/kinds-module/2-knd.html @@ -379,12 +379,12 @@ drawing up the index, and so on. return FALSE; } -int Kinds::get_variable_number(kind *K) { +int Kinds::get_variable_number(kind *K) { if ((K) && (K->construct == CON_KIND_VARIABLE)) return K->kind_variable_number; return -1; } -kind *Kinds::get_variable_stipulation(kind *K) { +kind *Kinds::get_variable_stipulation(kind *K) { if ((K) && (K->construct == CON_KIND_VARIABLE)) return K->kc_args[0]; return NULL; } @@ -708,7 +708,7 @@ to the kind "number" even if that's the current value of X.

-int Kinds::eq(kind *K1, kind *K2) {
+int Kinds::eq(kind *K1, kind *K2) {
     if (K1 == NULL) { if (K2 == NULL) return TRUE; return FALSE; }
     if (K2 == NULL) return FALSE;
     if (K1->construct != K2->construct) return FALSE;
@@ -747,7 +747,6 @@ to the kind "number" even if that's the current value of X.
     if (Kinds::eq(from, to)) return ALWAYS_MATCH;
 
     LOGIF(KIND_CHECKING, "(Is the kind %u compatible with %u?", from, to);
-
     switch(Latticework::order_relation(from, to, TRUE)) {
         case NEVER_MATCH: LOGIF(KIND_CHECKING, " No)\n"); return NEVER_MATCH;
         case ALWAYS_MATCH: LOGIF(KIND_CHECKING, " Yes)\n"); return ALWAYS_MATCH;
diff --git a/docs/kinds-module/2-tlok.html b/docs/kinds-module/2-tlok.html
index 0511a7a86..7e7346b38 100644
--- a/docs/kinds-module/2-tlok.html
+++ b/docs/kinds-module/2-tlok.html
@@ -204,7 +204,7 @@ function is what tells us that the superkind of 
 
 
-kind *Latticework::super(kind *K) {
+kind *Latticework::super(kind *K) {
     if (Kinds::eq(K, K_real_arithmetic_value)) return K_arithmetic_value;
     if (Kinds::eq(K, K_enumerated_value)) return K_understandable_value;
     if (Kinds::eq(K, K_arithmetic_value)) return K_understandable_value;
@@ -453,14 +453,14 @@ as appropriate.
 

-int Latticework::order_relation(kind *from, kind *to, int allow_casts) {
+int Latticework::order_relation(kind *from, kind *to, int allow_casts) {
     if (Kinds::get_variable_number(to) > 0) {
         kind *var_k = to, *other_k = from;
-        Deal separately with matches against kind variables13.6;
+        Deal separately with matches against kind variables13.7;
     }
     if (Kinds::get_variable_number(from) > 0) {
         kind *var_k = from, *other_k = to;
-        Deal separately with matches against kind variables13.6;
+        Deal separately with matches against kind variables13.7;
     }
     Deal separately with the sayability of lists13.1;
     Deal separately with the top and bottom of the lattice13.2;
@@ -513,9 +513,11 @@ and, of course, "value".
     int arity = (f_a < t_a)?f_a:t_a;
     int o = ALWAYS_MATCH;
     if (from->construct != to->construct)
-        o = Latticework::construct_compatible(from, to, allow_casts);
+        o = Latticework::construct_compatible(from, to, allow_casts);
     int i, this_o = NEVER_MATCH, fallen = FALSE;
     for (i=0; i<arity; i++) {
+        if ((Latticework::vacuous(from->kc_args[i])) && (Latticework::vacuous(to->kc_args[i])))
+            continue;
         if (KindConstructors::variance(from->construct, i) == COVARIANT)
             this_o = Latticework::order_relation(from->kc_args[i], to->kc_args[i], allow_casts);
         else {
@@ -526,14 +528,22 @@ and, of course, "value".
             case SOMETIMES_MATCH: if (o != NEVER_MATCH) { o = this_o; fallen = TRUE; } break;
         }
     }
-    if ((o == fallen) && (to->construct != CON_list_of)) return NEVER_MATCH;
+    if ((fallen) && (to->construct != CON_list_of)) return NEVER_MATCH;
     return o;
 
  • This code is used in §13.

§13.5.

-int Latticework::construct_compatible(kind *from, kind *to, int allow_casts) {
+int Latticework::vacuous(kind *K) {
+    if ((Kinds::eq(K, K_nil)) || (Kinds::eq(K, K_void))) return TRUE;
+    return FALSE;
+}
+
+

§13.6.

+ +
+int Latticework::construct_compatible(kind *from, kind *to, int allow_casts) {
     kind *K = from;
     while (K) {
         if (Kinds::eq(K, to)) return ALWAYS_MATCH;
@@ -557,7 +567,7 @@ and, of course, "value".
     return NEVER_MATCH;
 }
 
-

§13.6. Recall that kind variables are identified by a number in the range 1 ("A") +

§13.7. Recall that kind variables are identified by a number in the range 1 ("A") to 26 ("Z"), and that it is also possible to assign them a domain, or a "declaration". This marks that they are free to take on a value, within that domain. For example, in @@ -573,7 +583,7 @@ become any kind matching valu more restrictive declaration like arithmetic value.)

-

Deal separately with matches against kind variables13.6 = +

Deal separately with matches against kind variables13.7 =

@@ -586,14 +596,14 @@ more restrictive declaration like         default: {
             int vn = Kinds::get_variable_number(var_k);
             if (Kinds::get_variable_stipulation(var_k))
-                Act on a declaration usage, where inference is allowed13.6.1
+                Act on a declaration usage, where inference is allowed13.7.1
             else
-                Act on an ordinary usage, where inference is not allowed13.6.2;
+                Act on an ordinary usage, where inference is not allowed13.7.2;
         }
     }
 
  • This code is used in §13 (twice).
-

§13.6.1. When the specification matcher works on matching text such as +

§13.7.1. When the specification matcher works on matching text such as

@@ -620,7 +630,7 @@ we verify that "23" is a KK.

-

Act on a declaration usage, where inference is allowed13.6.1 = +

Act on a declaration usage, where inference is allowed13.7.1 =

@@ -640,13 +650,13 @@ a declaration usage of the variable         case MATCH_KIND_VARIABLES_AS_VALUES: return ALWAYS_MATCH;
     }
 
- -

§13.6.2. Whereas this is what happens when matching just K. On the inference pass, +

+

§13.7.2. Whereas this is what happens when matching just K. On the inference pass, we always make a match, which is legitimate because we know we are going to make a value-checking pass later.

-

Act on an ordinary usage, where inference is not allowed13.6.2 = +

Act on an ordinary usage, where inference is not allowed13.7.2 =

@@ -662,7 +672,7 @@ make a value-checking pass later.
                 return ALWAYS_MATCH;
     }
 
- +

§14. It's easy to confused when writing a type checker, especially with variables getting in the way, so these logging functions can be helpful:

diff --git a/docs/kinds-module/2-uk.html b/docs/kinds-module/2-uk.html index 61a681834..c772304a0 100644 --- a/docs/kinds-module/2-uk.html +++ b/docs/kinds-module/2-uk.html @@ -108,23 +108,22 @@ MathJax = {
 int Kinds::Behaviour::is_object(kind *K) {
-    if ((Kinds::conforms_to(K, K_object)) && (Kinds::eq(K, K_nil) == FALSE) && (Kinds::eq(K, K_void) == FALSE))
+    if ((Kinds::conforms_to(K, K_object)) &&
+        (Kinds::eq(K, K_nil) == FALSE) && (Kinds::eq(K, K_void) == FALSE))
         return TRUE;
     return FALSE;
 }
 
 int Kinds::Behaviour::is_subkind_of_object(kind *K) {
     if ((Kinds::conforms_to(K, K_object)) && (Kinds::eq(K, K_object) == FALSE) &&
-        (Kinds::eq(K, K_nil) == FALSE) &&
-        (Kinds::eq(K, K_void) == FALSE))
+        (Kinds::eq(K, K_nil) == FALSE) && (Kinds::eq(K, K_void) == FALSE))
         return TRUE;
     return FALSE;
 }
 
 int Kinds::Behaviour::is_object_of_kind(kind *K, kind *L) {
     if ((Kinds::conforms_to(K, K_object)) && (Kinds::conforms_to(K, L)) &&
-        (Kinds::eq(K, K_nil) == FALSE) &&
-        (Kinds::eq(K, K_void) == FALSE))
+        (Kinds::eq(K, K_nil) == FALSE) && (Kinds::eq(K, K_void) == FALSE))
         return TRUE;
     return FALSE;
 }
diff --git a/docs/kinds-module/4-kc2.html b/docs/kinds-module/4-kc2.html
index 4f58916d7..8cf64ceb7 100644
--- a/docs/kinds-module/4-kc2.html
+++ b/docs/kinds-module/4-kc2.html
@@ -584,7 +584,7 @@ group) which it's an instance of: value, word value, arithmetic value, and so on
 

-int KindConstructors::find_cast(kind_constructor *from, kind_constructor *to) {
+int KindConstructors::find_cast(kind_constructor *from, kind_constructor *to) {
     if (to) {
         kind_constructor_casting_rule *dtcr;
         for (dtcr = to->first_casting_rule; dtcr; dtcr = dtcr->next_casting_rule) {
diff --git a/docs/lexicon-module/P-wtmd.html b/docs/lexicon-module/P-wtmd.html
index 1a669b25c..e1db608cf 100644
--- a/docs/lexicon-module/P-wtmd.html
+++ b/docs/lexicon-module/P-wtmd.html
@@ -188,14 +188,14 @@ number of successes.
   29 words have a middle list: longest belongs to to (with 4 meanings)
   108 words have a subset list: longest belongs to street (with 4 meanings)
 
-Number of attempts to retrieve: 106491
+Number of attempts to retrieve: 106490
   of which unsuccessful: 88837
-  of which successful: 17654
+  of which successful: 17653
 
-Total attempts to match against excerpt meanings: 260962
-  of which, total with incorrect hash codes: 238885
-  of which, total with correct hash codes: 22077
-  of which, total which matched: 19336
+Total attempts to match against excerpt meanings: 260959
+  of which, total with incorrect hash codes: 238883
+  of which, total with correct hash codes: 22076
+  of which, total which matched: 19335
 
  • This code is used in §6.
diff --git a/docs/runtime-module/5-rlt.html b/docs/runtime-module/5-rlt.html index c3521eb41..d8fcf5657 100644 --- a/docs/runtime-module/5-rlt.html +++ b/docs/runtime-module/5-rlt.html @@ -447,7 +447,7 @@ as their meanings. See the test case packaging_state save = EmitArrays::begin_unchecked(RTRelations::iname(bp)); if (ExplicitRelations::stored_dynamically(bp)) { - EmitArrays::numeric_entry((inter_ti) 1); meaning one entry, which is 0; to be filled in later + EmitArrays::numeric_entry((inter_ti) 1); } else { TheHeap::emit_block_value_header(BinaryPredicates::kind(bp), FALSE, 8); EmitArrays::null_entry(); @@ -625,7 +625,6 @@ as their meanings. See the test case LocalVariables::declare(Z4_lv); annotated_i6_schema asch; i6_schema *i6s = NULL; - EmitCode::inv(SWITCH_BIP); EmitCode::down(); EmitCode::val_symbol(K_value, task_s); diff --git a/docs/secrets.html b/docs/secrets.html index 2d3ea749b..8da05af8a 100644 --- a/docs/secrets.html +++ b/docs/secrets.html @@ -72,7 +72,7 @@ for maintainers of Inform and may change at any time without notice.

§2. In working out what the compiler is doing (or has just done), the debugging log is always the first thing to investigate. This a text file like a running journal of what the compiler is doing; if it halts partway, either with problem -messages or an internal error, then the log is still written up that point, and +messages or an internal error, then the log is still written up to that point, and can be revealing. The log can be viewed in the Inform apps, but usually only if an "advanced" preference setting has been ticked. Once that is done, the log appears as one of the tabs in the Results pane after each compilation diff --git a/docs/standard_rules/S-var.html b/docs/standard_rules/S-var.html index 2bcad1bd3..f44ad529d 100644 --- a/docs/standard_rules/S-var.html +++ b/docs/standard_rules/S-var.html @@ -141,7 +141,7 @@ meanings from sentence to sentence. The noun -- documented at var_noun -- is an object that varies. The second noun is an object that varies. The person asked -- documented at var_person_asked -- is an object that varies. -The reason the action failed -- documented at var_reason -- is an action name +The reason the action failed -- documented at var_reason -- is an action based rule producing nothing that varies. The item described is an object that varies. diff --git a/docs/supervisor-module/4-em.html b/docs/supervisor-module/4-em.html index 0c1987c4e..0e7db82a3 100644 --- a/docs/supervisor-module/4-em.html +++ b/docs/supervisor-module/4-em.html @@ -178,7 +178,8 @@ extension .i7x. 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. +extensions. Similarly, another bad emacs habit is to write hidden symlinks, +with leafnames beginning ., so we reject those too.

@@ -226,7 +227,8 @@ extensions.
     inbuild_requirement *req, linked_list *search_results) {
     TEMPORARY_TEXT(fext)
     Filenames::write_extension(fext, F);
-    if (Str::eq_insensitive(fext, I".i7x")) {
+    if ((Str::eq_insensitive(fext, I".i7x")) &&
+        (Str::get_first_char(Filenames::get_leafname(F)) != '.')) {
         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);
diff --git a/inbuild/supervisor-module/Chapter 4/Extension Manager.w b/inbuild/supervisor-module/Chapter 4/Extension Manager.w
index 21eaaac45..290f0d1e3 100644
--- a/inbuild/supervisor-module/Chapter 4/Extension Manager.w	
+++ b/inbuild/supervisor-module/Chapter 4/Extension Manager.w	
@@ -113,7 +113,8 @@ extension |.i7x|. This was allowed in the early days of Inform 7, and early
 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.
+extensions. Similarly, another bad emacs habit is to write hidden symlinks,
+with leafnames beginning |.|, so we reject those too.
 
 =
 void ExtensionManager::search_nest_for(inbuild_genre *gen, inbuild_nest *N,
@@ -160,7 +161,8 @@ void ExtensionManager::search_nest_for_single_file(filename *F, inbuild_nest *N,
 	inbuild_requirement *req, linked_list *search_results) {
 	TEMPORARY_TEXT(fext)
 	Filenames::write_extension(fext, F);
-	if (Str::eq_insensitive(fext, I".i7x")) {
+	if ((Str::eq_insensitive(fext, I".i7x")) &&
+		(Str::get_first_char(Filenames::get_leafname(F)) != '.')) {
 		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);
diff --git a/inform7/Downloads/preform-diagnostics.txt b/inform7/Downloads/preform-diagnostics.txt
index 527718ab7..5dbfa6089 100644
--- a/inform7/Downloads/preform-diagnostics.txt
+++ b/inform7/Downloads/preform-diagnostics.txt
@@ -4764,21 +4764,21 @@
         {...} 
           constraint (none) extremes [1, infinity)
 
- hits 83030/166060 nti 15 constraint (none) extremes [1, infinity)
+ hits 83029/166058 nti 15 constraint (none) extremes [1, infinity)
     English:
         
{...} - (hits 16068/47449) (matched long text) constraint (none) extremes [2, infinity) + (hits 16068/47448) (matched long text) constraint (none) extremes [2, infinity) {...} - (hits 66962/66962) (matched long text) constraint (none) extremes [1, infinity) + (hits 66961/66961) (matched long text) constraint (none) extremes [1, infinity) nti 16 constraint (none) extremes [2, infinity) English:
{...} constraint (none) extremes [2, infinity) -
internal hits 16522/98958 nti r2 constraint (none) extremes [1, 1] +
internal hits 16522/98954 nti r2 constraint (none) extremes [1, 1] - internal hits 20353/236436 nti r2 constraint (none) extremes [1, 1] + internal hits 20353/236434 nti r2 constraint (none) extremes [1, 1] internal hits 2350/41386 nti r2 constraint (none) extremes [1, 1] @@ -5055,7 +5055,7 @@ {...} (hits 99/2082) (matched: '"(considering the first sixteen objects only)[command clarification break]" ( a )') constraint (none) extremes [1, infinity) - (hits 322/1418) (matched long text) constraint (none) extremes [2, infinity) + (hits 322/1418) (matched: 'an action based rule producing nothing that varies') constraint (none) extremes [2, infinity) (hits 661/1096) (matched long text) constraint (none) extremes [2, infinity) @@ -5185,16 +5185,16 @@ (hits 431/431) (matched long text) constraint (none) extremes [1, infinity) - hits 0/10194 nti 30 constraint DS = {30} extremes [2, infinity) + hits 0/10192 nti 30 constraint DS = {30} extremes [2, infinity) English: it with action {***} - (hits 0/3875) constraint DS = {30} extremes [3, infinity) + (hits 0/3874) constraint DS = {30} extremes [3, infinity) {with/having} (/) {***} - (hits 0/4068) constraint DS = {30} extremes [2, infinity) + (hits 0/4067) constraint DS = {30} extremes [2, infinity) {with/having} {...} ( ) - (hits 0/3483) constraint DS = {30} extremes [5, infinity) + (hits 0/3482) constraint DS = {30} extremes [5, infinity) {with/having} - (hits 0/4068) constraint DS = {30} extremes [2, infinity) + (hits 0/4067) constraint DS = {30} extremes [2, infinity) nti 19 constraint (none) extremes [1, infinity) English: @@ -5217,12 +5217,12 @@ {...} constraint (none) extremes [1, infinity) - hits 174/3554 nti 6 constraint DS = {6} extremes [1, infinity) + hits 174/3552 nti 6 constraint DS = {6} extremes [1, infinity) English: , _{and} - (hits 8/1080) (matched: ', and didn't understand addressee's last name error') constraint DS = {6} extremes [2, infinity) + (hits 8/1079) (matched: ', and didn't understand addressee's last name error') constraint DS = {6} extremes [2, infinity) _{,/and} - (hits 166/1278) (matched long text) constraint DS = {6} extremes [1, infinity) + (hits 166/1277) (matched long text) constraint DS = {6} extremes [1, infinity) hits 30/516 nti 21 constraint DS = {7} extremes [1, infinity) English: @@ -5267,7 +5267,7 @@ {...} called {...} constraint DS = {12} extremes [3, infinity) - hits 196/9062 nti 13 constraint DS = {13} extremes [2, infinity) + hits 196/9056 nti 13 constraint DS = {13} extremes [2, infinity) English: of {...} (hits 196/2552) (matched: 'of day -- documented at var_time --') constraint DS = {13} extremes [2, infinity) @@ -5285,7 +5285,7 @@ grammatical case (hits 1/1) (matched: 'grammatical case') constraint CS = {14} extremes [2, 2] - internal hits 2478/41948 nti 27 constraint (none) extremes [0, 0] + internal hits 2478/41944 nti 27 constraint (none) extremes [0, 0] internal hits 165/330 nti 28 constraint (none) extremes [1, infinity) @@ -5311,16 +5311,16 @@ (hits 5/5) (matched: 'value of kind k') constraint (none) extremes [1, infinity) - hits 5803/103678 nti r5 constraint (none) extremes [1, infinity) + hits 5802/103676 nti r5 constraint (none) extremes [1, infinity) English: ( ) (hits 0/2047) constraint DS = {r5} & CW = {r2, r5} extremes [3, infinity) ^ - (hits 1592/11283) (matched: 'k') constraint CW = {r2, r5} extremes [1, infinity) + (hits 1592/11282) (matched: 'k') constraint CW = {r2, r5} extremes [1, infinity) - (hits 201/9691) (matched: 'sayable value of kind k') constraint CW = {r2, r5} extremes [1, infinity) + (hits 201/9690) (matched: 'sayable value of kind k') constraint CW = {r2, r5} extremes [1, infinity) - (hits 3649/9490) (matched: 'an ice cream cone') constraint CW = {r2, r5} extremes [1, infinity) + (hits 3648/9489) (matched: 'an ice cream cone') constraint CW = {r2, r5} extremes [1, infinity) (hits 2/16024) (matched: 'object-based rulebook') constraint DS = {r5} extremes [2, infinity) @@ -5340,7 +5340,7 @@ of kind (hits 81/315) (matched: 'sayable value of kind k') constraint DS = {r5} & CW = {r2, r5} extremes [4, infinity) - internal hits 3649/18980 nti r5 constraint CW = {r2, r5} extremes [1, infinity) + internal hits 3648/18978 nti r5 constraint CW = {r2, r5} extremes [1, infinity) hits 2/32048 nti r5 constraint DS = {r5} extremes [2, infinity) English: @@ -5387,13 +5387,13 @@ ( ) (hits 0/21) constraint DS = {r5} extremes [3, infinity)
- (hits 9/28) (matched: 'a value of kind k') constraint (none) extremes [2, infinity) + (hits 9/27) (matched: 'a value of kind k') constraint (none) extremes [2, infinity) nothing - (hits 14/34) (matched: 'nothing') constraint CS = {r5} extremes [1, 1] + (hits 14/35) (matched: 'nothing') constraint CS = {r5} extremes [1, 1] action - (hits 0/20) constraint CS = {r5} extremes [1, 1] + (hits 1/21) (matched: 'action') constraint CS = {r5} extremes [1, 1] - (hits 39/39) (matched: 'value of kind k') constraint (none) extremes [1, infinity) + (hits 38/38) (matched: 'value of kind k') constraint (none) extremes [1, infinity) hits 15/30 nti r5 constraint (none) extremes [1, infinity) English: @@ -5416,7 +5416,7 @@ (hits 100/224) (matched: 'sayable value') constraint (none) extremes [1, infinity) - internal hits 1592/20088 nti r5 constraint CW = {r2, r5} extremes [1, 1] + internal hits 1592/20086 nti r5 constraint CW = {r2, r5} extremes [1, 1] internal hits 220/1418 nti r5 constraint CW = {r2, r5} extremes [1, 1] @@ -6677,7 +6677,7 @@ action of (hits 0/65) constraint DS = {24} extremes [3, infinity) - (hits 728/978) (matched: 'action name based rule producing nothing that varies') constraint (none) extremes [1, infinity) + (hits 728/978) (matched: 'action based rule producing nothing that varies') constraint (none) extremes [1, infinity) (hits 6/250) (matched: 'language of play') constraint (none) extremes [1, infinity) @@ -7969,7 +7969,7 @@ variable/variables (hits 2/350) (matched: 'text variables') constraint DS = {11} extremes [2, infinity) that/which vary/varies - (hits 59/287) (matched: 'action name based rule producing nothing that varies') constraint DS = {11} extremes [3, infinity) + (hits 59/287) (matched: 'action based rule producing nothing that varies') constraint DS = {11} extremes [3, infinity) (hits 2445/3832) (matched long text) constraint (none) extremes [1, infinity) @@ -8009,12 +8009,12 @@ global (hits 0/4) constraint DS = {10} extremes [2, infinity) - (hits 61/62) (matched: 'action name based rule producing nothing') constraint (none) extremes [1, infinity) + (hits 61/62) (matched: 'action based rule producing nothing') constraint (none) extremes [1, infinity) hits 61/124 nti 18 constraint (none) extremes [1, infinity) English: - (hits 61/62) (matched: 'action name based rule producing nothing') constraint (none) extremes [1, infinity) + (hits 61/62) (matched: 'action based rule producing nothing') constraint (none) extremes [1, infinity) (hits 0/1) constraint (none) extremes [1, infinity) @@ -9061,31 +9061,31 @@ waiting (hits 1/20) (matched: 'waiting') constraint CS = {13} extremes [1, 1] - hits 90/1036 nti 24 constraint DS = {14} extremes [1, infinity) + hits 91/1036 nti 24 constraint DS = {14} extremes [1, infinity) English: - (hits 90/334) (matched long text) constraint DS = {14} extremes [2, infinity) + (hits 91/334) (matched long text) constraint DS = {14} extremes [2, infinity) - (hits 0/244) constraint DS = {14} extremes [1, infinity) + (hits 0/243) constraint DS = {14} extremes [1, infinity) - hits 90/934 nti 14 constraint DS = {14} extremes [1, infinity) + hits 91/932 nti 14 constraint DS = {14} extremes [1, infinity) English: action based {...} - (hits 0/338) constraint DS = {14} extremes [3, infinity) + (hits 1/337) (matched: 'action based rule producing nothing that varies') constraint DS = {14} extremes [3, infinity) action - (hits 90/388) (matched long text) constraint DS = {14} extremes [1, infinity) + (hits 90/386) (matched long text) constraint DS = {14} extremes [1, infinity) action constraint CS = {14} extremes [1, 1] - hits 90/182 nti 25 constraint (none) extremes [0, infinity) + hits 90/180 nti 25 constraint (none) extremes [0, infinity) English: ^ - (hits 90/91) (matched long text) constraint (none) extremes [0, infinity) + (hits 90/90) (matched long text) constraint (none) extremes [0, infinity) - hits 1/182 nti 15 constraint DS = {15} extremes [1, infinity) + hits 0/180 nti 15 constraint DS = {15} extremes [1, infinity) English: {***} that/which vary/varies - (hits 1/91) (matched: 'name based rule producing nothing that varies') constraint DS = {15} extremes [2, infinity) + (hits 0/90) constraint DS = {15} extremes [2, infinity) {***} variable (hits 0/90) constraint DS = {15} extremes [1, infinity) diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt index 2222c69b5..6d1cbaf31 100644 --- a/inform7/Figures/timings-diagnostics.txt +++ b/inform7/Figures/timings-diagnostics.txt @@ -1,9 +1,9 @@ 100.0% in inform7 run 71.1% in compilation to Inter - 50.8% in //Sequence::undertake_queued_tasks// - 4.8% in //MajorNodes::pre_pass// - 3.2% in //MajorNodes::pass_1// - 1.9% in //ImperativeDefinitions::assess_all// + 50.3% in //Sequence::undertake_queued_tasks// + 4.7% in //MajorNodes::pre_pass// + 3.5% in //MajorNodes::pass_1// + 1.8% in //ImperativeDefinitions::assess_all// 1.8% in //RTPhrasebook::compile_entries// 1.4% in //RTKindConstructors::compile// 1.0% in //Sequence::lint_inter// @@ -13,25 +13,20 @@ 0.4% in //Sequence::undertake_queued_tasks// 0.4% in //Sequence::undertake_queued_tasks// 0.2% in //CompletionModule::compile// + 0.2% in //InferenceSubjects::emit_all// 0.2% in //RTKindConstructors::compile_permissions// - 0.1% in //InferenceSubjects::emit_all// - 0.1% in //Task::make_built_in_kind_constructors// - 0.1% in //Understand::traverse// - 0.1% in //World::stages_II_and_III// - 2.3% not specifically accounted for + 0.2% in //Task::make_built_in_kind_constructors// + 3.0% not specifically accounted for 26.1% in running Inter pipeline - 10.0% in step 14/15: generate inform6 -> auto.inf - 5.8% in step 5/15: load-binary-kits - 5.8% in step 6/15: make-synoptic-module - 1.5% in step 9/15: make-identifiers-unique + 9.9% in step 14/15: generate inform6 -> auto.inf + 6.0% in step 6/15: make-synoptic-module + 5.6% in step 5/15: load-binary-kits + 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.3% in step 7/15: shorten-wiring - 0.3% in step 8/15: detect-indirect-calls + 0.4% in step 7/15: shorten-wiring 0.2% in step 11/15: eliminate-redundant-labels - 0.1% in step 10/15: reconcile-verbs - 0.1% in step 2/15: parse-insertions - 0.1% in step 3/15: resolve-conditional-compilation - 0.6% not specifically accounted for - 2.3% in supervisor - 0.4% not specifically accounted for + 0.2% in step 8/15: detect-indirect-calls + 1.4% not specifically accounted for + 2.2% in supervisor + 0.5% not specifically accounted for diff --git a/services/lexicon-module/Figures/excerpts-diagnostics.txt b/services/lexicon-module/Figures/excerpts-diagnostics.txt index fb51f2947..aee44281e 100644 --- a/services/lexicon-module/Figures/excerpts-diagnostics.txt +++ b/services/lexicon-module/Figures/excerpts-diagnostics.txt @@ -5,11 +5,11 @@ Size of lexicon: 3101 excerpt meanings 29 words have a middle list: longest belongs to to (with 4 meanings) 108 words have a subset list: longest belongs to street (with 4 meanings) -Number of attempts to retrieve: 106491 +Number of attempts to retrieve: 106490 of which unsuccessful: 88837 - of which successful: 17654 + of which successful: 17653 -Total attempts to match against excerpt meanings: 260962 - of which, total with incorrect hash codes: 238885 - of which, total with correct hash codes: 22077 - of which, total which matched: 19336 +Total attempts to match against excerpt meanings: 260959 + of which, total with incorrect hash codes: 238883 + of which, total with correct hash codes: 22076 + of which, total which matched: 19335