From 071f42bc4d8bfcda9dd6510c0099e02c33da12f9 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Sat, 14 Jun 2025 11:43:50 -0700 Subject: [PATCH] Add v5 release notes. --- CHANGELOG.md | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77d4aa0..19df1ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,63 @@ SPDX-FileCopyrightText: 2025 Chris Duncan SPDX-License-Identifier: GPL-3.0-or-later --> +## v5.0.0 + +### Notable Changes + +#### API option + +**This is a potentially breaking change.** It is no longer necessary to call a +different function based which API should be used if a particular one is needed. +The `options` parameter now accepts an `api` property which can be "webgpu", +"webgl", "wasm", or "cpu". If not specified, NanoPow will select the best API +automatically based on availability. The old API-specific functions have been +deprecated as part of this release. Version 4 will be updated in a separate +minor release to support the `api` property and provide a bridge between +versions. + +#### WASM and CPU implementations + +While the WebGPU API is the fastest available in NanoPow and the WebGL API is a +close second, both of them are lightyears ahead of non-GPU-based implementations +in terms of speed. However, they also suffer from varying levels of browser +support and can be difficult to recover if there is a device error. In order to +provide the ultimate chain of fallback mechanisms, NanoPow now includes a WASM +module written in AssemblyScript and a CPU module written in plain TypeScript. +The WASM module has been optimized as much as possible, and benchmarks show that +it compares favorably to native speeds. The CPU module is provided as a final +fallback option, but it should only be used for testing very low difficulties. +However, CPU is now used for all validation since it is fast enough to check a +single hash and easier to maintain in one place. + +#### Sample systemd service unit file for NanoPow Server + +The `docs/` directory now includes a sample service unit file that can be used +to run the NanoPow work server in the background at login. It includes +instructions on usage in the header. + +### Other Changes + +New `Logger` and `Queue` classes improve logging and request handling. + +Fixed bug in IPC implementation which communicates between CLI and server. + +Server requests that throw an error will now return an error object to the user. + +Fixed issue with server puppeteer launching NanoPow before GPU was ready. + +Shaders now generated with scripts for more robust algorithm implementations. + +Improved configuration checks with NanoPowConfig class. + +Defer loading of APIs until requested. + +Improved type checking and removed unnecessary type exports. + +Reorganized project structure. + + + ## v4.1.7 ### Notable Changes -- 2.47.3