Releases: lolow/gdxcomp
Releases · lolow/gdxcomp
Release list
v0.0.11 — quicksilver
What's new
- Performance sweep. Across-the-board speedups for loading and comparing large GDX files:
- Tauri commands now run asynchronously so the UI stays responsive during big reads.
- Raw-mode FFI path for reading symbol data.
Arc<str>interning for repeated set-element labels (lower memory, faster compares).- Skip-table and
HashSet-based filters for faster symbol/element filtering. - DataTable row cap to keep the grid snappy on very large symbols.
See BENCH_BASELINE.md for before/after benchmark numbers.
Install
- Debian/Ubuntu:
gdxcomp_0.0.11_amd64.deb - Fedora/RHEL:
gdxcomp-0.0.11-1.x86_64.rpm
v0.0.10 — hotreload
What's new
- Reload all (↻) button in the Files toolbar, next to open-folder. Re-reads every loaded GDX file from disk and refreshes the symbol list. Useful when a GAMS run updates a GDX in place. Button is dimmed/disabled when no files are loaded.
axisfix
[0.0.9] — 2026-05-28
Fixed
- Chart x-axis (and y-axis on the second toggle) could render against a
stale Plotly axis-range cache after switching units — the axis would
drop to-1..6instead of the actual year range. The<Plot>
element now uses a Reactkeyderived from(symbol, unit, conversionFactor), forcing a full remount on unit change so Plotly
reinitializes cleanly. Both axes also pinautorange: true.
birding
[0.0.8] — 2026-05-28
Added
- Unit conversion
GtC ↔ GtCO2e(×44/12) for carbon mass — applies whenever
the unit containsGtC(word-boundary regex;GtCe/GtCO2/GtCH4are
unaffected). - Unit conversion
GTonC ↔ GtCO2e(×44/12) for the verbose form
(case-insensitive). - Unit conversion
GtCe ↔ GtCO2e(×44/12) — always applicable when the
unit containsGtCe, independent of any e-dimension filter. - Multiple unit conversions may now stack as toolbar buttons. Example:
withe=co2*filter +GtCe/yr, the toolbar shows
GtCe/yr | GtCO2e/yr | Gt/yr(each carries its own factor). - WITCH mode now auto-snaps the x-axis to the
t(year) dimension when
WITCH is activated or auto-detected, if the current symbol has at
domain. Matches the behaviour already inselectSymbolfor symbol
changes. - About dialog now shows the release codename and date inline with the
version:gdxcomp 0.0.8 (birding — 2026-05-28).
Fixed
@testing-library/domis now an explicit dev dependency, fixing the
Intel-Macnpm run tauri buildfailure reported in #1 (TS2305 on the
screenre-export from RTL v16).
perf2000
[0.0.7] — 2026-05-28
Performance sweep
Measured improvements (see BENCH_BASELINE.md for full numbers). All
changes are bench-justified; deferred items are documented inline.
Backend (Rust)
- Tuned
[profile.release](lto=fat, codegen-units=1, opt-level=3,
strip=symbols) for both workspaces;[profile.bench]inherits release. LoadedFile::distinct_keysswitched toHashSet<&str> + Vec(O(N²) → O(N)
in the inner loop).- O(1) symbol lookup:
name_index: HashMap<String, usize>onLoadedFile
andGdxFile.ipc_common_symbols_19files: 287 ms → 25 ms (11×). - Bounded LRU record cache (
crates/gdxcomp-core/src/cache.rs,
Mutex<LruCache<String, Arc<Vec<Rec>>>>) shared viaArc<RecordCache>
acrossLoadedFileclones. Capacity fromGDXCOMP_RECORD_CACHE_SIZE
(default 32).build_view_aggregated_4files: 10.58 ms → 574 µs (18×). build_view,distinct_keys,YearMapper::new,read_param_mapnow
iterateArc<Vec<Rec>>directly — no per-call deep clone.- New
build_chart/build_table+ commandsget_chart_view/
get_table_view. Chart-tab IPC payload −31% (3.77 ms vs 5.48 ms).
Frontend
- Switched
plotly.js-dist-min→plotly.js-basic-dist-min. Bundle 4.86 MB
→ 1.30 MB (−73%). - Vite
manualChunks+React.lazy(ChartView)+ Suspense. Main-entry JS
4.86 MB → 159 kB (30×) for first paint; Plotly fetched in parallel
when the chart tab activates. - Lazy table fetch on tab switch (was: every setup change sent the full
table). Cached client-side; invalidated on setup change. - Skip chart refetch on mode-only toggle when the current symbol has no
tdimension. - Client-side
distinctKeyscache by(symbol, dim), invalidated when
the loaded-file set changes. - Stable
DataTablerow keys so sort/filter doesn't churn React fibers.
Tooling
- Added
BENCH_BASELINE.mdwith criterion median wall-clock for every
bench; rows appended per phase, never overwritten. - New
crates/gdxcomp-core/benches/ipc_loopback.rsmirrors the Tauri
command bodies (includingserde_json::to_string). - Extended
load_and_view.rswith multi-file and pathological cases
(4 / 19 files, largest-symbol, distinct-keys 19-files, aggregated builds). scripts/bundle-size.shcaptures the frontend baseline.
magic2000
turbo2000
[0.0.5] — 2026-05-27
Added
- Unit conversion
T$/GtonCe → $/tCO2(factor 1000×12/44) for carbon price
symbols; toggle appears when unit matchesT$/GtonC*pattern. - "Remove all files" button in the file modal.
- Energy unit conversion
TWh ↔ EJavailable in all non-GDX modes. - Y-axis title shows extracted unit
[…]in all modes.
Fixed
- Carbon price conversion regex enforces
T$beforeGtonCto avoid false
match on inverted ratios. - Unit conversion toggles restricted to non-GDX modes.
simca2000
[0.0.4] — 2026-05-27
Added
- WITCH mode: CH4 unit conversion
GtCe/yr → Mt/yrusing GWP fromemi_gwp
parameter (AR4 default = 25 if parameter absent). - WITCH mode: N2O unit conversion
GtCe/yr → Mt/yrusing GWP fromemi_gwp
parameter (AR4 default = 298 if parameter absent). - Energy unit conversion toggle
TWh ↔ EJfor any symbol whose unit contains
TWh(factor 3.6/1000); available in all modes. - New backend command
read_param_mapto read any 1-dim parameter as a
key→value map. - Y-axis title shows the symbol unit in all modes (extracted from
[…]in
description).
Fixed
- CH4 conversion now correctly applies the C→CO2 factor (44/12) before
dividing by GWP.