@bldrs-ai/conway 1.548.1514 → 1.553.1520

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/compiled/examples/browser-bundled.cjs +23 -2
  2. package/compiled/examples/cli-bundled.cjs +156 -18
  3. package/compiled/examples/cli-step-bundled.cjs +28 -4
  4. package/compiled/examples/validator-bundled.cjs +23 -2
  5. package/compiled/src/AP214E3_2010/ap214_command_line_main.js +4 -1
  6. package/compiled/src/AP214E3_2010/ap214_regression_main.js +47 -4
  7. package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts +33 -0
  8. package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.d.ts.map +1 -1
  9. package/compiled/src/compat/web-ifc/ifc_api_proxy_ifc.js +80 -20
  10. package/compiled/src/core/wasm_heap.d.ts +5 -4
  11. package/compiled/src/core/wasm_heap.d.ts.map +1 -1
  12. package/compiled/src/core/wasm_heap.js +5 -4
  13. package/compiled/src/ifc/ifc_command_line_main.js +12 -0
  14. package/compiled/src/ifc/ifc_geometry_extraction.d.ts +55 -0
  15. package/compiled/src/ifc/ifc_geometry_extraction.d.ts.map +1 -1
  16. package/compiled/src/ifc/ifc_geometry_extraction.js +170 -20
  17. package/compiled/src/ifc/ifc_regression_main.js +97 -6
  18. package/compiled/src/ifc/ifc_rel_aggregate_extraction.test.d.ts +2 -0
  19. package/compiled/src/ifc/ifc_rel_aggregate_extraction.test.d.ts.map +1 -0
  20. package/compiled/src/ifc/ifc_rel_aggregate_extraction.test.js +115 -0
  21. package/compiled/src/loaders/conway_model_loader.d.ts.map +1 -1
  22. package/compiled/src/loaders/conway_model_loader.js +26 -0
  23. package/compiled/src/memory/memory.d.ts.map +1 -1
  24. package/compiled/src/memory/memory.js +25 -1
  25. package/compiled/src/memory/memory_stats.test.d.ts +2 -0
  26. package/compiled/src/memory/memory_stats.test.d.ts.map +1 -0
  27. package/compiled/src/memory/memory_stats.test.js +115 -0
  28. package/compiled/src/scripts/bless_perf_snapshot.test.js +44 -6
  29. package/compiled/src/scripts/perf_csv_quoting.test.js +113 -23
  30. package/compiled/src/statistics/statistics.d.ts +18 -0
  31. package/compiled/src/statistics/statistics.d.ts.map +1 -1
  32. package/compiled/src/statistics/statistics.js +22 -0
  33. package/compiled/src/statistics/statistics_wasm_heap.test.d.ts +2 -0
  34. package/compiled/src/statistics/statistics_wasm_heap.test.d.ts.map +1 -0
  35. package/compiled/src/statistics/statistics_wasm_heap.test.js +60 -0
  36. package/compiled/src/version/version.js +1 -1
  37. package/compiled/tsconfig.tsbuildinfo +1 -1
  38. package/package.json +1 -1
@@ -30,7 +30,7 @@ var import_node_process = require("node:process");
30
30
  var readline = __toESM(require("node:readline"), 1);
31
31
 
32
32
  // compiled/src/version/version.js
33
- var versionString = "Conway v1.548.1514";
33
+ var versionString = "Conway v1.553.1520";
34
34
 
35
35
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
36
36
  var wasmType = "";
@@ -145,6 +145,27 @@ var Statistics = class {
145
145
  setGeometryMemory(value) {
146
146
  this.geometryMemory = value;
147
147
  }
148
+ /**
149
+ * Wasm linear-memory high-water mark in MB, from wasmHeapByteLength.
150
+ *
151
+ * @return {number | undefined} - wasm heap high-water, or undefined
152
+ */
153
+ getWasmHeapPeak() {
154
+ return this.wasmHeapPeak;
155
+ }
156
+ /**
157
+ * The wasm heap only ever grows, so a single reading of it IS the peak —
158
+ * no sampling loop and no forced GC. It is a different quantity from
159
+ * geometryMemory, and by a wide margin: on MB-Khaya an 8 MB live geometry
160
+ * payload sits under an 85 MB wasm heap, the gap being allocator overhead,
161
+ * fragmentation and the intermediate buffers a boolean leaves behind (see
162
+ * src/ifc/geometry_residency.ts). Neither substitutes for the other.
163
+ *
164
+ * @param value - wasm heap high-water in MB
165
+ */
166
+ setWasmHeapPeak(value) {
167
+ this.wasmHeapPeak = value;
168
+ }
148
169
  /**
149
170
  *
150
171
  * @return {string | undefined} - preprocessor version or undefined
@@ -278,7 +299,7 @@ var Statistics = class {
278
299
  const products = this.productCount !== void 0 ? `Products: ${this.productCount}, ` : "";
279
300
  const breakdown = this.formatGeometryTypeCounts();
280
301
  const geometryTypes = breakdown !== void 0 ? `, Geometry Types: ${breakdown}` : "";
281
- return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, ` + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
302
+ return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
282
303
  }
283
304
  };
284
305
 
@@ -14965,7 +14965,7 @@ ${t5.join("\n")}` : "";
14965
14965
  var import_process = require("process");
14966
14966
 
14967
14967
  // compiled/src/version/version.js
14968
- var versionString = "Conway v1.548.1514";
14968
+ var versionString = "Conway v1.553.1520";
14969
14969
 
14970
14970
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
14971
14971
  function pThreadsAllowed() {
@@ -15819,6 +15819,27 @@ var Statistics = class {
15819
15819
  setGeometryMemory(value) {
15820
15820
  this.geometryMemory = value;
15821
15821
  }
15822
+ /**
15823
+ * Wasm linear-memory high-water mark in MB, from wasmHeapByteLength.
15824
+ *
15825
+ * @return {number | undefined} - wasm heap high-water, or undefined
15826
+ */
15827
+ getWasmHeapPeak() {
15828
+ return this.wasmHeapPeak;
15829
+ }
15830
+ /**
15831
+ * The wasm heap only ever grows, so a single reading of it IS the peak —
15832
+ * no sampling loop and no forced GC. It is a different quantity from
15833
+ * geometryMemory, and by a wide margin: on MB-Khaya an 8 MB live geometry
15834
+ * payload sits under an 85 MB wasm heap, the gap being allocator overhead,
15835
+ * fragmentation and the intermediate buffers a boolean leaves behind (see
15836
+ * src/ifc/geometry_residency.ts). Neither substitutes for the other.
15837
+ *
15838
+ * @param value - wasm heap high-water in MB
15839
+ */
15840
+ setWasmHeapPeak(value) {
15841
+ this.wasmHeapPeak = value;
15842
+ }
15822
15843
  /**
15823
15844
  *
15824
15845
  * @return {string | undefined} - preprocessor version or undefined
@@ -15952,7 +15973,7 @@ var Statistics = class {
15952
15973
  const products = this.productCount !== void 0 ? `Products: ${this.productCount}, ` : "";
15953
15974
  const breakdown = this.formatGeometryTypeCounts();
15954
15975
  const geometryTypes = breakdown !== void 0 ? `, Geometry Types: ${breakdown}` : "";
15955
- return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, ` + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
15976
+ return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
15956
15977
  }
15957
15978
  };
15958
15979
 
@@ -16324,7 +16345,10 @@ var Memory = class {
16324
16345
  const rss = (memoryUsage.rss / 1024 / 1024).toFixed(3);
16325
16346
  const heapTotal = (memoryUsage.heapTotal / 1024 / 1024).toFixed(3);
16326
16347
  const heapUsed = (memoryUsage.heapUsed / 1024 / 1024).toFixed(3);
16327
- return `Node Memory Usage: RSS ${rss} MB, Heap Total: ${heapTotal} MB, Heap Used: ${heapUsed} MB`;
16348
+ const external = (memoryUsage.external / 1024 / 1024).toFixed(3);
16349
+ const arrayBuffers = (memoryUsage.arrayBuffers / 1024 / 1024).toFixed(3);
16350
+ const peakRss = (process.resourceUsage().maxRSS / 1024).toFixed(3);
16351
+ return `Node Memory Usage: RSS ${rss} MB, Heap Total: ${heapTotal} MB, Heap Used: ${heapUsed} MB, Peak RSS: ${peakRss} MB, External: ${external} MB, ArrayBuffers: ${arrayBuffers} MB`;
16328
16352
  }
16329
16353
  };
16330
16354
 
@@ -27012,6 +27036,10 @@ function wasmHeapView(wasmModule, arrayType, pointer, elementCount) {
27012
27036
  const numBytes = elementCount * arrayType.BYTES_PER_ELEMENT;
27013
27037
  return new arrayType(reconcileHeapBuffer(wasmModule, address, numBytes), address, elementCount);
27014
27038
  }
27039
+ function wasmHeapByteLength(wasmModule) {
27040
+ refreshHeapViews(wasmModule);
27041
+ return currentHeapBuffer(wasmModule)?.byteLength ?? 0;
27042
+ }
27015
27043
  function arrayToWasmHeap(wasmModule, array) {
27016
27044
  const numBytes = array.length * array.BYTES_PER_ELEMENT;
27017
27045
  const arrayPtr = wasmModule._malloc(numBytes) >>> 0;
@@ -93924,10 +93952,21 @@ var IfcGeometryExtraction = class _IfcGeometryExtraction {
93924
93952
  if (relating !== null && relating !== void 0) {
93925
93953
  await this.ensureResidentForProductExtract(relating.localID, pinned, leafSpans);
93926
93954
  }
93927
- const related = relAggregate.RelatedObjects;
93928
- if (related !== null && related !== void 0) {
93929
- for (const product of related) {
93930
- await this.ensureResidentForProductExtract(product.localID, pinned, leafSpans);
93955
+ const relatedExpressIDs = this.relatedObjectExpressIDs_(relAggregate);
93956
+ if (relatedExpressIDs === void 0) {
93957
+ const related = relAggregate.RelatedObjects;
93958
+ if (related !== null && related !== void 0) {
93959
+ for (const product of related) {
93960
+ await this.ensureResidentForProductExtract(product.localID, pinned, leafSpans);
93961
+ }
93962
+ }
93963
+ } else {
93964
+ for (const relatedExpressID of relatedExpressIDs) {
93965
+ const relatedLocalID = this.model.resolveExpressID(relatedExpressID);
93966
+ if (relatedLocalID === void 0) {
93967
+ continue;
93968
+ }
93969
+ await this.ensureResidentForProductExtract(relatedLocalID, pinned, leafSpans);
93931
93970
  }
93932
93971
  }
93933
93972
  return pinned;
@@ -93955,6 +93994,46 @@ var IfcGeometryExtraction = class _IfcGeometryExtraction {
93955
93994
  this.extractRelAggregateGeometry(relAggregate);
93956
93995
  }
93957
93996
  }
93997
+ /**
93998
+ * Express IDs of one IfcRelAggregates' RelatedObjects, read straight off
93999
+ * the relationship's own record.
94000
+ *
94001
+ * Deliberately NOT `relAggregate.RelatedObjects`: that generated getter
94002
+ * memoizes the materialised entity array onto the relationship as
94003
+ * `RelatedObjects_` (IfcRelAggregates.gen.ts), so every related product
94004
+ * stays reachable for as long as the relationship does — and each product
94005
+ * in turn memoizes the tessellation subtree its own getters walk
94006
+ * (IfcPolyLoop.Polygon_, IfcCartesianPoint.Coordinates_, ...). The
94007
+ * per-product graphs therefore SUM instead of overlapping. On SKYLARK250,
94008
+ * whose 1,992 products are all aggregate targets, that is 2.7 GB of a
94009
+ * 5.4 GB peak (conway#549 §4). Resolving one product at a time from IDs
94010
+ * lets each graph die with its iteration, exactly as the ordinary product
94011
+ * loop's iterator already does.
94012
+ *
94013
+ * The scan mirrors the getter's own parse — `forEachReferenceInField`
94014
+ * runs the same optional/array-token walk over the same field
94015
+ * coordinates — so it sees the same entries in the same order.
94016
+ *
94017
+ * @param relAggregate The relationship to read.
94018
+ * @return {number[] | undefined} The related objects' express IDs in
94019
+ * record order, or undefined when the list holds an entry that is not a
94020
+ * `#N` reference — an inline entity, `$`, or junk. Only the generated
94021
+ * getter can resolve (or reject) those, so the caller falls back to it
94022
+ * rather than guessing.
94023
+ */
94024
+ relatedObjectExpressIDs_(relAggregate) {
94025
+ const expressIDs = [];
94026
+ let allReferences = true;
94027
+ relAggregate.forEachReferenceInField(REL_AGGREGATES_RELATED_OFFSET, REL_AGGREGATES_RELATED_BASE, REL_AGGREGATES_RELATED_DEPTH, (expressID) => {
94028
+ if (expressID === void 0) {
94029
+ allReferences = false;
94030
+ return false;
94031
+ }
94032
+ expressIDs.push(expressID);
94033
+ return true;
94034
+ });
94035
+ return allReferences ? expressIDs : void 0;
94036
+ }
93958
94037
  /**
93959
94038
  * Extract one IfcRelAggregates' related products with the relating
93960
94039
  * object's ("master") rel-voids — the shared per-item body of the
@@ -93966,17 +94045,63 @@ var IfcGeometryExtraction = class _IfcGeometryExtraction {
93966
94045
  * @param relAggregate The rel-aggregates relationship to process.
93967
94046
  */
93968
94047
  extractRelAggregateGeometry(relAggregate) {
94048
+ const stepper = this.extractRelAggregateGeometryIncremental(relAggregate);
94049
+ let step = stepper.next();
94050
+ while (step.done !== true) {
94051
+ step = stepper.next();
94052
+ }
94053
+ }
94054
+ /**
94055
+ * Incremental twin of {@link extractRelAggregateGeometry}: identical
94056
+ * extraction, suspending after each related product so a driver can
94057
+ * report progress and yield to the event loop *inside* the relationship.
94058
+ *
94059
+ * Without this the whole rel-aggregates pass is a single unyielding call.
94060
+ * On SKYLARK250 all 2,002 of the cooperative walk's suspension points
94061
+ * fire in 16 ms — every product is an aggregate target, so the product
94062
+ * loop skips them all — and the remaining ~60 s of real work runs inside
94063
+ * two `extractRelAggregateGeometry` calls with no suspension point at
94064
+ * all. That is the browser-tab hang in conway#549 §7, and it is
94065
+ * independent of the memory fix: a small model with one big aggregate
94066
+ * freezes the same way.
94067
+ *
94068
+ * Suspending here cannot show a caller a half-built product: the split is
94069
+ * BETWEEN products, and each product's scene content is complete before
94070
+ * the yield. Nor does it reorder emission — the products are visited in
94071
+ * record order either way. Aggregate targets are skipped by the product
94072
+ * pass (see aggregateTargetLocalIDs) and by the pump's product worklist,
94073
+ * so a consumer that streams meshes mid-relationship sees the
94074
+ * not-yet-reached products as absent rather than as uncut placeholders.
94075
+ *
94076
+ * @param relAggregate The rel-aggregates relationship to process.
94077
+ * @yields {number} The number of related products extracted so far from
94078
+ * THIS relationship, after each one.
94079
+ */
94080
+ *extractRelAggregateGeometryIncremental(relAggregate) {
94081
+ let masterRelVoids;
93969
94082
  try {
93970
94083
  const relatingObject = relAggregate.RelatingObject;
93971
- const masterRelVoids = relatingObject instanceof IfcProduct ? this.extractRelVoids(relatingObject) : void 0;
93972
- const relatedObjects = relAggregate.RelatedObjects;
93973
- for (const productRepresentation of relatedObjects) {
93974
- if (productRepresentation instanceof IfcProduct) {
93975
- this.extractProductGeometry(productRepresentation, masterRelVoids);
94084
+ masterRelVoids = relatingObject instanceof IfcProduct ? this.extractRelVoids(relatingObject) : void 0;
94085
+ const relatedExpressIDs = this.relatedObjectExpressIDs_(relAggregate);
94086
+ let extractedCount = 0;
94087
+ if (relatedExpressIDs === void 0) {
94088
+ for (const productRepresentation of relAggregate.RelatedObjects) {
94089
+ if (productRepresentation instanceof IfcProduct) {
94090
+ this.extractProductGeometry(productRepresentation, masterRelVoids);
94091
+ yield ++extractedCount;
94092
+ }
94093
+ }
94094
+ } else {
94095
+ for (const relatedExpressID of relatedExpressIDs) {
94096
+ const relatedObject = this.model.getTypedElementByExpressID(relatedExpressID, IfcObjectDefinition);
94097
+ if (relatedObject === void 0) {
94098
+ throw new Error("Value in STEP was incorrectly typed");
94099
+ }
94100
+ if (relatedObject instanceof IfcProduct) {
94101
+ this.extractProductGeometry(relatedObject, masterRelVoids);
94102
+ yield ++extractedCount;
94103
+ }
93976
94104
  }
93977
- }
93978
- if (masterRelVoids !== void 0) {
93979
- masterRelVoids[0].delete();
93980
94105
  }
93981
94106
  } catch (ex) {
93982
94107
  if (ex instanceof Error) {
@@ -93989,6 +94114,10 @@ var IfcGeometryExtraction = class _IfcGeometryExtraction {
93989
94114
  } else {
93990
94115
  logger_default.error("Unknown exception processing IfcRelAssociateMaterials.");
93991
94116
  }
94117
+ } finally {
94118
+ if (masterRelVoids !== void 0) {
94119
+ masterRelVoids[0].delete();
94120
+ }
93992
94121
  }
93993
94122
  }
93994
94123
  /**
@@ -94193,9 +94322,9 @@ var IfcGeometryExtraction = class _IfcGeometryExtraction {
94193
94322
  }
94194
94323
  this.prepareExtractionMaps_();
94195
94324
  const products = this.model.types(IfcProduct);
94196
- const totalItems = this.model.typeCount(IfcProduct) + this.model.typeCount(IfcRelAggregates);
94197
- let completedItems = 0;
94198
94325
  const aggregateTargets = this.aggregateTargetLocalIDs();
94326
+ let totalItems = this.model.typeCount(IfcProduct) + this.model.typeCount(IfcRelAggregates) + aggregateTargets.size;
94327
+ let completedItems = 0;
94199
94328
  for (const product of products) {
94200
94329
  yield [++completedItems, totalItems];
94201
94330
  if (aggregateTargets.has(product.localID)) {
@@ -94218,7 +94347,12 @@ var IfcGeometryExtraction = class _IfcGeometryExtraction {
94218
94347
  const relAggregates = this.model.types(IfcRelAggregates);
94219
94348
  for (const relAggregate of relAggregates) {
94220
94349
  yield [++completedItems, totalItems];
94221
- this.extractRelAggregateGeometry(relAggregate);
94350
+ const aggregateBase = completedItems;
94351
+ for (const extractedInAggregate of this.extractRelAggregateGeometryIncremental(relAggregate)) {
94352
+ completedItems = aggregateBase + extractedInAggregate;
94353
+ totalItems = Math.max(totalItems, completedItems);
94354
+ yield [completedItems, totalItems];
94355
+ }
94222
94356
  }
94223
94357
  if (RegressionCaptureState.memoization !== MemoizationCapture.FULL) {
94224
94358
  this.model.geometry.deleteTemporaries();
@@ -95344,6 +95478,10 @@ function geometryExtraction(model, limitCSGDepth = true, maxCSGDepth = 20, onPro
95344
95478
  const ONE_KB = 1024;
95345
95479
  const ONE_MB = ONE_KB * ONE_KB;
95346
95480
  statistics?.setGeometryMemory(conwayModel.model.geometry.calculateGeometrySize() / ONE_MB);
95481
+ const wasmModule = conwaywasm.wasmModule;
95482
+ if (wasmModule !== void 0) {
95483
+ statistics?.setWasmHeapPeak(wasmHeapByteLength(wasmModule) / ONE_MB);
95484
+ }
95347
95485
  const ifcProjectName = conwayModel.getIfcProjectName();
95348
95486
  if (ifcProjectName !== null) {
95349
95487
  statistics?.setProjectName(ifcProjectName);
@@ -15943,7 +15943,7 @@ var ParsingBuffer = class {
15943
15943
  };
15944
15944
 
15945
15945
  // compiled/src/version/version.js
15946
- var versionString = "Conway v1.548.1514";
15946
+ var versionString = "Conway v1.553.1520";
15947
15947
 
15948
15948
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
15949
15949
  function pThreadsAllowed() {
@@ -16797,6 +16797,27 @@ var Statistics = class {
16797
16797
  setGeometryMemory(value) {
16798
16798
  this.geometryMemory = value;
16799
16799
  }
16800
+ /**
16801
+ * Wasm linear-memory high-water mark in MB, from wasmHeapByteLength.
16802
+ *
16803
+ * @return {number | undefined} - wasm heap high-water, or undefined
16804
+ */
16805
+ getWasmHeapPeak() {
16806
+ return this.wasmHeapPeak;
16807
+ }
16808
+ /**
16809
+ * The wasm heap only ever grows, so a single reading of it IS the peak —
16810
+ * no sampling loop and no forced GC. It is a different quantity from
16811
+ * geometryMemory, and by a wide margin: on MB-Khaya an 8 MB live geometry
16812
+ * payload sits under an 85 MB wasm heap, the gap being allocator overhead,
16813
+ * fragmentation and the intermediate buffers a boolean leaves behind (see
16814
+ * src/ifc/geometry_residency.ts). Neither substitutes for the other.
16815
+ *
16816
+ * @param value - wasm heap high-water in MB
16817
+ */
16818
+ setWasmHeapPeak(value) {
16819
+ this.wasmHeapPeak = value;
16820
+ }
16800
16821
  /**
16801
16822
  *
16802
16823
  * @return {string | undefined} - preprocessor version or undefined
@@ -16930,7 +16951,7 @@ var Statistics = class {
16930
16951
  const products = this.productCount !== void 0 ? `Products: ${this.productCount}, ` : "";
16931
16952
  const breakdown = this.formatGeometryTypeCounts();
16932
16953
  const geometryTypes = breakdown !== void 0 ? `, Geometry Types: ${breakdown}` : "";
16933
- return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, ` + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
16954
+ return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
16934
16955
  }
16935
16956
  };
16936
16957
 
@@ -17302,7 +17323,10 @@ var Memory = class {
17302
17323
  const rss = (memoryUsage.rss / 1024 / 1024).toFixed(3);
17303
17324
  const heapTotal = (memoryUsage.heapTotal / 1024 / 1024).toFixed(3);
17304
17325
  const heapUsed = (memoryUsage.heapUsed / 1024 / 1024).toFixed(3);
17305
- return `Node Memory Usage: RSS ${rss} MB, Heap Total: ${heapTotal} MB, Heap Used: ${heapUsed} MB`;
17326
+ const external = (memoryUsage.external / 1024 / 1024).toFixed(3);
17327
+ const arrayBuffers = (memoryUsage.arrayBuffers / 1024 / 1024).toFixed(3);
17328
+ const peakRss = (process.resourceUsage().maxRSS / 1024).toFixed(3);
17329
+ return `Node Memory Usage: RSS ${rss} MB, Heap Total: ${heapTotal} MB, Heap Used: ${heapUsed} MB, Peak RSS: ${peakRss} MB, External: ${external} MB, ArrayBuffers: ${arrayBuffers} MB`;
17306
17330
  }
17307
17331
  };
17308
17332
 
@@ -86173,7 +86197,7 @@ function geometryExtraction(model, limitCSGDepth = true, maxCSGDepth = 20) {
86173
86197
  const ONE_MB = ONE_KB * ONE_KB;
86174
86198
  const wasmModule = conwaywasm.wasmModule;
86175
86199
  if (wasmModule !== void 0) {
86176
- logger_default.info(`WASM heap high-water: ${(wasmHeapByteLength(wasmModule) / ONE_MB).toFixed(1)} MB`);
86200
+ statistics?.setWasmHeapPeak(wasmHeapByteLength(wasmModule) / ONE_MB);
86177
86201
  }
86178
86202
  statistics?.setGeometryMemory(conwayModel.model.geometry.calculateGeometrySize() / ONE_MB);
86179
86203
  model.invalidate(true);
@@ -944,7 +944,7 @@ var EntityTypesIfcCount = 909;
944
944
  var entity_types_ifc_gen_default = EntityTypesIfc;
945
945
 
946
946
  // compiled/src/version/version.js
947
- var versionString = "Conway v1.548.1514";
947
+ var versionString = "Conway v1.553.1520";
948
948
 
949
949
  // compiled/dependencies/conway-geom/interface/conway_geometry.js
950
950
  var wasmType = "";
@@ -1059,6 +1059,27 @@ var Statistics = class {
1059
1059
  setGeometryMemory(value) {
1060
1060
  this.geometryMemory = value;
1061
1061
  }
1062
+ /**
1063
+ * Wasm linear-memory high-water mark in MB, from wasmHeapByteLength.
1064
+ *
1065
+ * @return {number | undefined} - wasm heap high-water, or undefined
1066
+ */
1067
+ getWasmHeapPeak() {
1068
+ return this.wasmHeapPeak;
1069
+ }
1070
+ /**
1071
+ * The wasm heap only ever grows, so a single reading of it IS the peak —
1072
+ * no sampling loop and no forced GC. It is a different quantity from
1073
+ * geometryMemory, and by a wide margin: on MB-Khaya an 8 MB live geometry
1074
+ * payload sits under an 85 MB wasm heap, the gap being allocator overhead,
1075
+ * fragmentation and the intermediate buffers a boolean leaves behind (see
1076
+ * src/ifc/geometry_residency.ts). Neither substitutes for the other.
1077
+ *
1078
+ * @param value - wasm heap high-water in MB
1079
+ */
1080
+ setWasmHeapPeak(value) {
1081
+ this.wasmHeapPeak = value;
1082
+ }
1062
1083
  /**
1063
1084
  *
1064
1085
  * @return {string | undefined} - preprocessor version or undefined
@@ -1192,7 +1213,7 @@ var Statistics = class {
1192
1213
  const products = this.productCount !== void 0 ? `Products: ${this.productCount}, ` : "";
1193
1214
  const breakdown = this.formatGeometryTypeCounts();
1194
1215
  const geometryTypes = breakdown !== void 0 ? `, Geometry Types: ${breakdown}` : "";
1195
- return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, ` + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
1216
+ return `[${dateString}]: Load Status: ${this.loadStatus}, Project Name: ${this.projectName}, Version: ${versionStr}, Conway Version: ${conwayVersionNumber}-${wasmType}, Parse Time: ${this.parseTime} ms, Geometry Time: ${this.geometryTime} ms, Total Time: ${this.totalTime} ms, Geometry Memory: ${this.geometryMemory?.toFixed(3)} MB, WASM Heap High-Water: ${this.wasmHeapPeak?.toFixed(3)} MB, ` + products + `Memory Statistics: ${this.memoryStatistics}, Preprocessor Version: ${this.preprocessorVersion}, Originating System: ${this.originatingSystem}` + geometryTypes;
1196
1217
  }
1197
1218
  };
1198
1219
 
@@ -405,12 +405,15 @@ function geometryExtraction(model, limitCSGDepth = true, maxCSGDepth = 20) {
405
405
  statistics?.setGeometryTime(executionTimeInMs);
406
406
  const ONE_KB = 1024;
407
407
  const ONE_MB = ONE_KB * ONE_KB;
408
+ // Recorded on the statistics rather than logged on its own line, so the one
409
+ // spelling of this number reaches the benchmark's `peakWasmHeapMb` column
410
+ // through the same load-status line as every other measurement (#552).
408
411
  // Measured through wasmHeapByteLength rather than HEAPU8.length: the
409
412
  // module's cached view can be a growth step behind the real heap (#485), and
410
413
  // a high-water figure that under-reports is worse than none.
411
414
  const wasmModule = conwaywasm.wasmModule;
412
415
  if (wasmModule !== void 0) {
413
- Logger.info(`WASM heap high-water: ${(wasmHeapByteLength(wasmModule) / ONE_MB).toFixed(1)} MB`);
416
+ statistics?.setWasmHeapPeak(wasmHeapByteLength(wasmModule) / ONE_MB);
414
417
  }
415
418
  statistics?.setGeometryMemory(conwayModel.model.geometry.calculateGeometrySize() / (ONE_MB));
416
419
  model.invalidate(true);
@@ -9,6 +9,7 @@ import fsPromises from "fs/promises";
9
9
  import path from "path";
10
10
  import crypto from "crypto";
11
11
  import { ConwayGeometry } from "../../dependencies/conway-geom/index.js";
12
+ import { wasmHeapByteLength } from "../core/wasm_heap.js";
12
13
  import Logger from "../logging/logger.js";
13
14
  import Environment from "../utilities/environment.js";
14
15
  import { ExtractResult } from "../core/shared_constants.js";
@@ -35,22 +36,40 @@ function csvSafeString(from) {
35
36
  // Bytes per megabyte for memory-stat formatting in the perf CSV.
36
37
  // eslint-disable-next-line no-magic-numbers
37
38
  const BYTES_PER_MB = 1024 * 1024;
39
+ // Kilobytes per megabyte, for resourceUsage().maxRSS which reports kB.
40
+ // eslint-disable-next-line no-magic-numbers
41
+ const KB_PER_MB = 1024;
38
42
  // Fixed-point precision for perf MB values.
39
43
  // eslint-disable-next-line no-magic-numbers
40
44
  const PERF_MB_PRECISION = 2;
45
+ /** Placeholder for a column this row has no measurement for. */
46
+ const UNMEASURED = "N/A";
41
47
  /**
42
48
  * Write a single-row per-file perf CSV at the given path, matching the
43
49
  * column layout of the IFC regression child so the batch aggregator can
44
50
  * merge STEP and IFC rows into one perf CSV. No-op when perfPath is empty.
45
51
  *
52
+ * `peakRssMb` is the process high-water mark; `rssMb`, `heapUsedMb`,
53
+ * `heapTotalMb`, `externalMb` and `arrayBuffersMb` are single instants
54
+ * sampled at write time, and `geometryMemoryMb` is conway's own vertex+index
55
+ * payload rather than a process metric. `arrayBuffersMb` is a subset of
56
+ * `externalMb`, and neither sees the wasm heap. See the fuller
57
+ * column-by-column note on the IFC child's copy of this function
58
+ * (`src/ifc/ifc_regression_main.ts`), which is the writer these columns have
59
+ * to stay identical to.
60
+ *
46
61
  * @param perfPath Path to write the CSV to. Empty string disables.
47
62
  * @param stepFile Source STEP file path (basename used as the row key).
48
63
  * @param status OK or FAIL.
49
64
  * @param parseTimeMs Parse stage duration in ms.
50
65
  * @param geometryTimeMs Geometry extraction duration in ms.
51
66
  * @param totalTimeMs Sum of parse + geometry in ms.
67
+ * @param geometryMemoryBytes Geometry payload conway allocated, in bytes, or
68
+ * undefined where no geometry was extracted (written as N/A).
69
+ * @param wasmHeapBytes Wasm linear-memory high-water in bytes, or undefined
70
+ * where the module was never brought up (written as N/A).
52
71
  */
53
- async function writePerfCsvIfRequested(perfPath, stepFile, status, parseTimeMs, geometryTimeMs, totalTimeMs) {
72
+ async function writePerfCsvIfRequested(perfPath, stepFile, status, parseTimeMs, geometryTimeMs, totalTimeMs, geometryMemoryBytes, wasmHeapBytes) {
54
73
  if (perfPath.length === 0) {
55
74
  return;
56
75
  }
@@ -58,10 +77,23 @@ async function writePerfCsvIfRequested(perfPath, stepFile, status, parseTimeMs,
58
77
  const rssMb = (mem.rss / BYTES_PER_MB).toFixed(PERF_MB_PRECISION);
59
78
  const heapUsedMb = (mem.heapUsed / BYTES_PER_MB).toFixed(PERF_MB_PRECISION);
60
79
  const heapTotalMb = (mem.heapTotal / BYTES_PER_MB).toFixed(PERF_MB_PRECISION);
80
+ const externalMb = (mem.external / BYTES_PER_MB).toFixed(PERF_MB_PRECISION);
81
+ const arrayBuffersMb = (mem.arrayBuffers / BYTES_PER_MB).toFixed(PERF_MB_PRECISION);
82
+ // maxRSS is reported in kilobytes, unlike memoryUsage() which is in bytes.
83
+ const peakRssMb = (process.resourceUsage().maxRSS / KB_PER_MB).toFixed(PERF_MB_PRECISION);
84
+ const geometryMemoryMb = geometryMemoryBytes !== void 0 ?
85
+ (geometryMemoryBytes / BYTES_PER_MB).toFixed(PERF_MB_PRECISION) :
86
+ UNMEASURED;
87
+ const peakWasmHeapMb = wasmHeapBytes !== void 0 ?
88
+ (wasmHeapBytes / BYTES_PER_MB).toFixed(PERF_MB_PRECISION) :
89
+ UNMEASURED;
61
90
  const fileName = csvSafeString(path.basename(stepFile));
62
- const header = "file,status,parseTimeMs,geometryTimeMs,totalTimeMs,rssMb,heapUsedMb,heapTotalMb\n";
91
+ const header = "file,status,parseTimeMs,geometryTimeMs,totalTimeMs,geometryMemoryMb," +
92
+ "peakWasmHeapMb,rssMb,peakRssMb,heapUsedMb,heapTotalMb,externalMb," +
93
+ "arrayBuffersMb\n";
63
94
  const row = `${fileName},${status},${parseTimeMs},${geometryTimeMs},${totalTimeMs},` +
64
- `${rssMb},${heapUsedMb},${heapTotalMb}\n`;
95
+ `${geometryMemoryMb},${peakWasmHeapMb},${rssMb},${peakRssMb},` +
96
+ `${heapUsedMb},${heapTotalMb},${externalMb},${arrayBuffersMb}\n`;
65
97
  try {
66
98
  await fsPromises.writeFile(perfPath, header + row);
67
99
  }
@@ -206,7 +238,18 @@ function doWork() {
206
238
  const geometryTimeMs = geomEndMs - geomStartMs;
207
239
  const totalTimeMs = geomEndMs - parseStartMs;
208
240
  const perfStatus = extraction === void 0 ? "FAIL" : "OK";
209
- await writePerfCsvIfRequested(perfPath, stepFile, perfStatus, parseTimeMs, geometryTimeMs, totalTimeMs);
241
+ // Sized before anything downstream can release meshes, and only on
242
+ // the OK path: a failed extraction leaves a partial cache whose size
243
+ // is not this model's geometry footprint.
244
+ const geometryMemoryBytes = extraction !== void 0 ?
245
+ model.geometry.calculateGeometrySize() : void 0;
246
+ // The heap is grow-only, so this is the run's high-water mark even
247
+ // though it is read once, after the fact. conwayGeom is the engine
248
+ // every extraction in this process runs against.
249
+ const wasmModule = conwayGeom.wasmModule;
250
+ const wasmHeapBytes = wasmModule !== void 0 ?
251
+ wasmHeapByteLength(wasmModule) : void 0;
252
+ await writePerfCsvIfRequested(perfPath, stepFile, perfStatus, parseTimeMs, geometryTimeMs, totalTimeMs, geometryMemoryBytes, wasmHeapBytes);
210
253
  // AFTP sizing pass: no-op unless the wasm module was built with
211
254
  // CONWAY_ALLOC_TELEMETRY (see conway-geom structures/alloc_telemetry.h).
212
255
  conwayGeom.dumpAllocTelemetry(path.basename(stepFile));
@@ -128,6 +128,28 @@ export declare class IfcApiProxyIfc implements IfcApiModelPassthrough {
128
128
  private demandAggregates_?;
129
129
  /** Cursor into demandAggregates_ — items before it are extracted. */
130
130
  private demandAggregatesCursor_;
131
+ /**
132
+ * The relationship at demandAggregatesCursor_, part-way through its
133
+ * related products. A batch budget subdivides ONE relationship rather
134
+ * than being spent whole on it: an aggregate-structured model puts all
135
+ * of its geometry in this pass, so budgeting per relationship makes the
136
+ * budget meaningless and gives the caller a single unyielding call for
137
+ * the whole model (conway#549 §7 — SKYLARK250 gets two budget units for
138
+ * 1,992 products). Undefined between relationships.
139
+ */
140
+ private demandAggregateStepper_?;
141
+ /**
142
+ * Source pins and leaf spans held for the relationship
143
+ * demandAggregateStepper_ is walking, released when it finishes. They
144
+ * have to outlive the batch that started it: the pins are what keep the
145
+ * relationship's products readable, and re-running the prefetch per batch
146
+ * would re-walk every related product's closure per batch. This holds the
147
+ * same pins for the same span of work as before — that span just no
148
+ * longer has to fit in one pump call.
149
+ */
150
+ private demandAggregatePins_?;
151
+ /** Leaf byte ranges pinned alongside demandAggregatePins_. */
152
+ private demandAggregateSpans_?;
131
153
  /**
132
154
  * Coordination matrix the deferred capture derived (or adopted from
133
155
  * the parse-time preview channel). Kept OFF the model tuple's slot 5
@@ -755,6 +777,17 @@ export declare class IfcApiProxyIfc implements IfcApiModelPassthrough {
755
777
  */
756
778
  private recentreEnabled_;
757
779
  private checkShardPreconditions_;
780
+ /**
781
+ * Finish with the relationship demandAggregateStepper_ is on: close a
782
+ * stepper that has not run out (its finally frees the master rel-voids
783
+ * vector, which is native memory), and drop the source pins the async
784
+ * prefetch took for it.
785
+ *
786
+ * Safe to call when nothing is in flight — that is the whole point of
787
+ * calling it from the worklist installers, where a stepper left over from
788
+ * a previous walk would otherwise hold both.
789
+ */
790
+ private releaseDemandAggregate_;
758
791
  private pumpGeometryBatch_;
759
792
  /**
760
793
  * Walk the scene and emit every not-yet-captured placed instance as
@@ -1 +1 @@
1
- {"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ifc_api_proxy_ifc.d.ts","sourceRoot":"","sources":["../../../../src/compat/web-ifc/ifc_api_proxy_ifc.ts"],"names":[],"mappings":"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"}