For AI agents: the complete documentation index is available at https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/llms.txt, the full documentation bundle is available at https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/llms-full.txt, and this page is available as Markdown at https://open-spaced-repetition.github.io/ts-fsrs/ja-JP/updates/binding/index.md.

Updates

Published package releases, changelogs, and npm downloads.

0.6.0

Breaking Changes

  • Remove @open-spaced-repetition/binding-win32-ia32-msvc and the i686-pc-windows-msvc build target. Native 32-bit Windows builds are no longer supported; Windows x64 and ARM64 packages remain available. (#429) Thanks @ishiko732!
  • Require Node.js 24 or later and use an ESM default loader. Threaded WASI initialization is exposed through ./dynamic; ./dynamic-wasi remains an alias. (#406, #431) Thanks @ishiko732!
  • Resolve timezones in Rust for CSV conversion instead of accepting a JavaScript offset callback. Use convertCsvToFsrsItems(data, nextDayStartsAt, timezoneOrOffset, modelVersion?), with an IANA timezone name or a fixed UTC offset in minutes; IANA offsets are resolved per review timestamp, including daylight saving transitions. (#384, #550) Thanks @ishiko732!
  • Default optimizer/model workflows to FSRS-7, with fast stability and fractional study-day intervals. Set modelVersion: 'FSRS-6' explicitly for FSRS-6 training/evaluation and pass 'FSRS-6' to CSV conversion to retain whole study-day intervals. Use the same model version throughout conversion, training, and evaluation. new FSRSBinding() (or an empty parameter array) also defaults to FSRS-7; pass an explicit FSRS-6 parameter vector to retain FSRS-6 in that constructor. (#530) Thanks @ishiko732!
  • Require an explicit positive numeric decay for computeOptimalSteps: FSRS-4 uses 1, FSRS-4.5/5 use 0.5, and FSRS-6 uses weights[20]. This single-decay fitting API does not support the FSRS-7 mixture curve. (#538) Thanks @ishiko732!
  • Memory-state JSON serialization now includes stability_fast. Update strict stored-data schemas and preserve this field for FSRS-7; do not treat an FSRS-6 memory state as a complete FSRS-7 state. (#530) Thanks @ishiko732!

New Features

  • FSRSBindingReview.deltaT preserves fractional elapsed days, and FSRSBinding.nextStates accepts fractional days for FSRS-7 while retaining whole-day behavior for FSRS-6. BindingMemoryState(stability, difficulty, stabilityFast?) adds a stabilityFast getter; the optional constructor argument defaults to stability for compatibility. (#530) Thanks @ishiko732!
  • Add the threadless @open-spaced-repetition/binding-wasm32-wasip1 package, including its /workerd and /wasm exports. The trainer can run across Node.js, browser Workers, and Cloudflare Workers/workerd using the appropriate native or WebAssembly entry. The threadless WASIp1 build requires no COOP/COEP headers or shared memory, so static sites hosted on GitHub Pages can run training locally in a browser Worker without a training backend. See the optimizer guide and live playground. Training and time-series evaluation retain Promise-based APIs but execute synchronously on the current worker; use a dedicated Worker in browsers. Progress callbacks are supported, and returning false stops the operation. (#432, #433) Thanks @ishiko732!
  • Accept ReadableStream<Uint8Array> input for CSV conversion. (#447) Thanks @ishiko732!
  • Add convertCsvToFsrsItemsWithCardIds and card IDs in training/evaluation workflows, preserving card identity across converted review items. (#553) Thanks @ishiko732!
  • Add enableSchedPenalties for FSRS-7 training and evaluation. (#558) Thanks @ishiko732!

Fixes and Dependencies

  • Validate optimizer inputs and bound review-history expansion. FSRSBindingItem rejects review ratings outside 1–4, including Manual, and supplied cardIds must match the item count. (#550, #553) Thanks @ishiko732!
  • Fix dynamic loader cleanup after asynchronous work and update native/WASI dependencies and binding validation. (#536, #594) Thanks @ishiko732!
  • Incorporate upstream training/evaluation fixes and update fsrs-rs to revision d7f337b. (#571, #600) Thanks @ishiko732!

0.4.0

Minor Changes

  • #379 7479e74 Thanks @ishiko732! - chore(binding): remove the Burn dependency. Upgrade fsrs to the published 6.4.0 crate (no longer requires the custom burn fork), drop the [patch.crates-io.burn]/[patch.crates-io.burn-train] workspace patches, and delete the burn-v0.17.1-sys-metrics.wasm32 patch.

0.3.0

Minor Changes

  • #325 948e3cd Thanks @ishiko732! - feat(binding): add computeOptimalSteps to analyze revlog and recommend optimal learning/relearning steps

    Compute optimal learning/relearning steps from CSV revlog data. Analyzes review history by rating groups, fits forgetting curves via golden-section search, and recommends step durations based on desired retention and decay parameters.

Patch Changes

  • #327 e089f2f Thanks @ishiko732! - fix: Build the binding packages with Rust 1.94.1 and invalidate Turborepo caches when CI configuration changes.

  • #329 5cd8949 Thanks @ishiko732! - fix: include README, localized package docs, and license files in the published binding tarball

0.2.1

Patch Changes

0.2.0

Minor Changes

  • #272 23ec7a9 Thanks @ishiko732! - refactor(binding): refactor progress callback to support training interruption

    BREAKING CHANGES:

  • #309 7c0d97c Thanks @ishiko732! - feat(binding): add initOptimizer dynamic loader for custom wasm/worker resources

    • Export ./dynamic-wasi entry from binding with initOptimizer(options) for Node.js and browser
    • Export ./wasi-worker and ./wasm entries from binding-wasm32-wasi for resolving worker and wasm paths
    • Allows users to provide wasm binary (Buffer, URL, Response) and worker (factory, instance, path) externally

Patch Changes

0.1.1

Patch Changes

  • #241 f2b700d Thanks @ishiko732! - Fix missing build artifacts in the binding package and ensure .js, .cjs, .mjs, and .d.ts files are properly included in the distributed package.

0.1.0

Minor Changes

  • #237 c1d61fe Thanks @ishiko732! - # @open-spaced-repetition/binding v0.1.0

    🎉 Release the first version of the high-performance FSRS optimizer based on fsrs-rs and napi-rs.

    Features

    • High-Performance Parameter Optimization: Native Rust implementation for computationally intensive FSRS parameter optimization
    • Multi-Platform Support: Pre-built binaries for 11 platforms:
      • Windows: x64, ia32, arm64 (MSVC)
      • macOS: x64, arm64 (Darwin)
      • Linux: x64/arm64 (GNU/MUSL)
      • Android: arm64
      • WebAssembly: wasm32-wasip1-threads
    • Core APIs:
      • computeParameters(): Optimize FSRS parameters from review history
      • convertCsvToFsrsItems(): Convert CSV review logs to FSRS data format
      • FSRSBinding: FSRS scheduler instance for memory state calculations

    Requirements

    • Node.js >= 20.0.0
    • For WebAssembly: Additional package manager configuration required

    Limitations

    • ⚠️ Beta Notice: API may change in future releases
    • Cannot run in edge-runtime environments (edge-runtime does not support WASI)

    Documentation

    See README.md for installation instructions and usage examples.