## Release Notes: SeaORM 2.0.0-rc.39

*(since 2.0.0-rc.38)*

### Dependency Upgrades

**SeaQuery 1.0, SeaSchema 0.18, and SQLx 0.9** (#3074)

SeaORM now builds on the stable SeaQuery 1.0 release and SQLx 0.9. This is the main payload of rc.39:

- `sea-query` is now `~1.0.0`
- `sea-query-sqlx` is now `0.9.0`
- `sea-schema` and `sea-schema-sync` are now `0.18.0`
- `sqlx` and `sqlx-core` are now `0.9.0`

Runtime and driver feature wiring has been updated for SQLx 0.9's split runtime and TLS feature names. `sea-orm-migration`, `sea-orm-cli`, examples, and `sea-orm-sync` have been kept in sync with the new dependency graph.

Compatibility notes:

- This RC is dependency-breaking relative to rc.38 because it promotes SeaQuery, SeaSchema, and SQLx to their next major/minor release lines.
- `sea-query` is intentionally constrained to `~1.0.0`, allowing 1.0.x patches without automatically accepting 1.1.x.
- No intentional schema-discovery or entity-generation behavior change is expected from the dependency upgrade itself, aside from the frontend import fix listed below.

**MSRV updates**

The async crate now requires Rust 1.94.0. `sea-orm-sync` now requires Rust 1.88.0.

### New Features

**Async closure transaction helpers** (#3074)

`DatabaseConnection` and `DatabaseTransaction` now expose inherent async-closure transaction helpers:

```rust
db.transaction_async(async |txn| {
    bakery::Entity::insert(active_model).exec(txn).await?;
    Ok(())
})
.await?;
```

The existing `TransactionTrait::transaction` and `TransactionTrait::transaction_with_config` APIs are still available. The new inherent methods provide a forward-compatible path with async closures while preserving the trait API for existing users.

**Optional `db.statement` recording in tracing spans** (#3045)

`ConnectOptions::record_stmt_in_spans(false)` disables recording full SQL text into the `db.statement` tracing field while still emitting database operation spans:

```rust
let mut opt = ConnectOptions::new(DATABASE_URL);
opt.record_stmt_in_spans(false);
```

This is useful for deployments that want query timing and operation visibility without storing statement text in traces. The default remains `true`.

### Bug Fixes

**Use wasm-compatible `Instant` for wasm32** (#3071)

The rusqlite driver now uses a wasm-compatible time source on `wasm32`, avoiding `std::time::Instant` issues in wasm builds.

**Generate correct imports in `frontend` entity output** (#3037)

The code generator now emits the required imports for frontend-format entities using date/time, decimal, UUID, vector, network, JSON, and array column types. This fixes generated frontend entity files that previously referenced those types without importing them.

### Examples

Examples were refreshed for the rc.39 dependency versions. Loco, Seaography, and React Admin examples keep local `sea-orm` / `sea-orm-migration` patches so CI and local checks exercise the workspace crates instead of resolving the last published RC.
