Skip to content

Releases: sql-js/sql.js

Release v1.13.0

15 Mar 21:19
Compare
Choose a tag to compare

sql.js v1.13 Release Notes

This release of sql.js brings significant updates and improvements, primarily focused on modernizing the underlying toolchain and enhancing functionality.

The online playground was rewritten:

sql editor

Key highlights include:

๐Ÿš€ Dependency Updates and Modernization

  • SQLite Core Upgrade: sql.js is now built with SQLite version 3.49. This incorporates all the enhancements and bug fixes from SQLite versions 3.45.0 through 3.49.1. See SQLite release notes. Notable SQLite improvements in this range include:

    • Query Planner Enhancements: Expect improved query performance due to optimizations in query planning, especially for complex queries, star joins, and queries involving IN operators. These improvements are detailed in the SQLite release notes for versions 3.47.0, 3.49.0, and 3.46.0.
    • New SQL Features: Take advantage of new SQL functions and features introduced in SQLite 3.47+, such as:
      • Enhanced iif() function with support for multiple arguments (SQLite 3.49.0).
      • Right-hand side negative indexing for JSON ->> operator (SQLite 3.47.0).
      • json_pretty() function for formatted JSON output (SQLite 3.46.0).
      • Support for underscore characters in numeric literals (SQLite 3.46.0).
      • Improved date and time function modifiers like ceiling and floor (SQLite 3.46.0).
    • Bug Fixes and Stability: Benefit from numerous bug fixes and stability improvements across various SQLite components, ensuring a more robust database experience. Refer to the SQLite Changelog for detailed fixes in versions 3.45.1, 3.45.2, 3.45.3, 3.46.1, 3.47.1, 3.47.2, 3.49.1, and 3.44.2.
  • Emscripten 4.x Upgrade: sql.js is now compiled with Emscripten 4. See changes in emscripten. This major update to the Emscripten toolchain brings several under-the-hood improvements:

    • Modern JavaScript Output: Emscripten 4 generates more modern JavaScript code. While compatibility with older browsers is still maintained through transpilation where necessary, this move to modern JS internally can lead to performance improvements in modern environments.
    • LLVM 19.1.6: The underlying compiler toolchain is updated to LLVM 19.1.6, which includes improvements to code generation, optimizations, and potentially better support for newer WebAssembly features.
    • Minimum Node.js Version Increase (for Emscripten Toolchain): While sql.js itself aims for broad compatibility, the Emscripten toolchain now requires Node.js v18.3 as a minimum (and is tested with Node.js 22 in this release). This is primarily relevant for developers building sql.js from source.
  • Node.js Worker Thread Compatibility: The worker scripts are now fully compatible with Node.js worker threads, allowing for seamless integration in Node.js environments leveraging worker threads. This is a significant step towards better performance and concurrency in Node.js.

  • Removal of Puppeteer Dev Dependency: The project no longer depends on Puppeteer for worker tests. Worker tests now utilize Node.js worker threads directly, simplifying the testing setup and removing an external dependency. This also speeds up the devcontainer installation.

โœจ New Features

  • updateHook API (#604): This release introduces a new low-level API, Database.updateHook, providing a mechanism to register a callback function that is invoked whenever a row is updated, inserted, or deleted in the database. view docs
    • This feature wraps the native sqlite3_update_hook functionality, allowing developers to monitor database modifications at a granular level.
    • Callbacks receive information about the operation type (update, insert, delete), the database name, table name, and rowid.

๐Ÿ› ๏ธ Internal and Development Changes

  • Worker Debug Script: Added a new debug script specifically for worker environments to aid in development and troubleshooting of worker-related issues.

Release v1.12.0

29 Oct 20:51
Compare
Choose a tag to compare
new getRowsModified action in web worker

Release v1.11.0

30 Jul 16:42
Compare
Choose a tag to compare
New emscripten compiler

Release v1.10.3

14 Apr 08:49
d58d741
Compare
Choose a tag to compare
updated sqlite to v3.45.2

Release v1.10.2

20 Jan 23:12
de08ddb
Compare
Choose a tag to compare
fix memory error with long sql strings

Release v1.10.1

16 Jan 17:13
53335a9
Compare
Choose a tag to compare
update deps

Release v1.10.0

16 Jan 13:14
3d30768
Compare
Choose a tag to compare
sqlite 3.45 (new json functions)

fixed regestered functions disappearing after exporting the database

Release v1.9.0

28 Nov 20:21
783bf12
Compare
Choose a tag to compare
sqlite 3.44

Release v1.8.0

08 Sep 01:41
12d3603
Compare
Choose a tag to compare

Release v1.7.0

01 Jun 08:42
4ab923e
Compare
Choose a tag to compare
sqlite 3.38.5, size optimizations, more recent compiler