Notable changes:
- Respect progress callback function option.
- Set default backup rate to 100 to follow Node's implementation.
- Various validation and error handling.
Note that the op implementation in this PR is still sync.
Given this code:
```js
import { backup, DatabaseSync } from "node:sqlite";
const populate = (database, rows) => {
database.exec("CREATE TABLE test (id INTEGER PRIMARY KEY, name TEXT);");
let values = "";
for (let i = 0; i < rows; i++) {
values += `(${i}, 'Name ${i}'),`;
}
values = values.slice(0, -1);
database.exec(`INSERT INTO test (id, name) VALUES ${values}`);
};
const backupPath = "backup.sqlite";
const database = new DatabaseSync(":memory:");
populate(database, 1000);
const t0 = performance.now();
await backup(database, backupPath, { rate: 1 });
const t1 = performance.now();
database.close();
console.log(`Backup completed in ${(t1 - t0).toFixed(2)} ms`);
```
Results:
```bash
# Node.js v25.2.1
➜ node ./backup-benchmark.js
Backup completed in 0.71 ms
# This PR (debug build mode)
➜ ddeno -A ./backup-benchmark.js
Backup completed in 0.71 ms
# Deno v2.6.0
➜ deno -A ./backup-benchmark.js
Backup completed in 1272.16 ms
```
The current implementation is slow because it sleeps 250ms after each
`sqlite3_backup_step` call.
|
||
|---|---|---|
| .cargo | ||
| .devcontainer | ||
| .github | ||
| bench_util | ||
| cli | ||
| docs | ||
| ext | ||
| libs | ||
| runtime | ||
| tests | ||
| tools | ||
| .dlint.json | ||
| .dprint.json | ||
| .editorconfig | ||
| .gitattributes | ||
| .gitignore | ||
| .gitmodules | ||
| .rustfmt.toml | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| import_map.json | ||
| LICENSE.md | ||
| README.md | ||
| Releases.md | ||
| rust-toolchain.toml | ||
Deno
Deno
(/ˈdiːnoʊ/, pronounced
dee-no) is a JavaScript, TypeScript, and WebAssembly runtime with secure
defaults and a great developer experience. It's built on V8,
Rust, and Tokio.
Learn more about the Deno runtime in the documentation.
Installation
Install the Deno runtime on your system using one of the commands below. Note that there are a number of ways to install Deno - a comprehensive list of installation options can be found here.
Shell (Mac, Linux):
curl -fsSL https://deno.land/install.sh | sh
PowerShell (Windows):
irm https://deno.land/install.ps1 | iex
Homebrew (Mac):
brew install deno
Chocolatey (Windows):
choco install deno
WinGet (Windows):
winget install --id=DenoLand.Deno
Build and install from source
Complete instructions for building Deno from source can be found here.
Your first Deno program
Deno can be used for many different applications, but is most commonly used to
build web servers. Create a file called server.ts and include the following
TypeScript code:
Deno.serve((_req: Request) => {
return new Response("Hello, world!");
});
Run your server with the following command:
deno run --allow-net server.ts
This should start a local web server on http://localhost:8000.
Learn more about writing and running Deno programs in the docs.
Additional resources
- Deno Docs: official guides and reference docs for the Deno runtime, Deno Deploy, and beyond.
- Deno Standard Library: officially supported common utilities for Deno programs.
- JSR: The open-source package registry for modern JavaScript and TypeScript
- Developer Blog: Product updates, tutorials, and more from the Deno team.
Contributing
We appreciate your help! To contribute, please read our contributing instructions.