@pond-ts/fit 0.71.0 → 0.72.0

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 (2) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -8,7 +8,8 @@ The `@pond-ts` packages — `pond-ts`, `@pond-ts/react`, `@pond-ts/charts`,
8
8
  under a single `v*` tag, so this file covers them all. Pre-1.0: minor bumps may
9
9
  include new features and type-level changes; patch bumps are strictly additive.
10
10
 
11
- [Unreleased]: https://github.com/pond-ts/pond/compare/v0.71.0...HEAD
11
+ [Unreleased]: https://github.com/pond-ts/pond/compare/v0.72.0...HEAD
12
+ [0.72.0]: https://github.com/pond-ts/pond/compare/v0.71.0...v0.72.0
12
13
  [0.71.0]: https://github.com/pond-ts/pond/compare/v0.70.0...v0.71.0
13
14
  [0.70.0]: https://github.com/pond-ts/pond/compare/v0.69.0...v0.70.0
14
15
  [0.69.0]: https://github.com/pond-ts/pond/compare/v0.68.0...v0.69.0
@@ -74,6 +75,37 @@ include new features and type-level changes; patch bumps are strictly additive.
74
75
 
75
76
  ## [Unreleased]
76
77
 
78
+ ## [0.72.0] — 2026-10-08
79
+
80
+ ### Changed
81
+
82
+ - `pond-ts`: **`join` and `joinMany` work on columns now, not events** — 20
83
+ to 190× faster in the cases below, with the same output. `join` used to
84
+ build an event for every row on both sides, merge them row by row and
85
+ rebuild the columns. Now it walks the two key columns once, then either
86
+ adopts each column as is or gathers it in one pass. A side's value columns
87
+ are adopted as is whenever all its rows land in the output once and in order:
88
+ always the left side of a `left` join, the right side of a `right` join, and
89
+ both sides when the keys match one for one (`joinMany` over a shared grid).
90
+ One year of 1-minute bars, ~97.5k rows a side, `type: 'left'` unless noted
91
+ (`packages/core/scripts/perf-join.mjs`):
92
+
93
+ | Value columns per side | Before | After |
94
+ | ------------------------ | -------- | -------- |
95
+ | 59 and 59 | 1,868 ms | 24 ms |
96
+ | 5 and 5 | 168 ms | 4.2 ms |
97
+ | 59 and 2 | 766 ms | 4.1 ms |
98
+ | `joinMany`, 4 × 5, outer | 457 ms | 15–20 ms |
99
+
100
+ A left join now costs about as much as the **other** side is wide. To bring
101
+ across only the columns you read, narrow that side first; `select` and
102
+ `rename` don't copy:
103
+ `bars.join(spy.select('close').rename({ close: 'spy' }), { type: 'left' })`.
104
+
105
+ One visible difference: on a row with no match, `event.data()` now lists the
106
+ other side's fields as `undefined`, as every other operator's events do. It
107
+ used to leave them out. `get()` returns `undefined` either way.
108
+
77
109
  ## [0.71.0] — 2026-09-24
78
110
 
79
111
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pond-ts/fit",
3
- "version": "0.71.0",
3
+ "version": "0.72.0",
4
4
  "private": false,
5
5
  "description": "Fitness & activity domain library on pond-ts: typed quantities, canonical activity series, and analytics (geo distance/elevation, power NP/IF/TSS, zones, splits)",
6
6
  "keywords": [
@@ -59,7 +59,7 @@
59
59
  "verify": "npm run format:check && npm run build && npm test"
60
60
  },
61
61
  "peerDependencies": {
62
- "pond-ts": "^0.71.0"
62
+ "pond-ts": "^0.72.0"
63
63
  },
64
64
  "devDependencies": {
65
65
  "typescript": "^5.6.3",