Skip to content

v0.4.0

Compare
Choose a tag to compare
@chesedo chesedo released this 11 Jul 09:22
· 1219 commits to main since this release
c7f5d22

Features

  • Services can opt into an AWS RDS Postgres, MySql or MariaDB instance rather than the previously shared Postgres instance (#180)

Improvements

  • No longer need to put cdylib in Cargo.toml (#212)
  • cargo shuttle command can now be run in child directories of a project (#203 Thanks @ivancernja)
  • Invalid API keys for cargo shuttle now have a better message for fixing the problem (#217 Thanks @Xavientois)
  • Improved error when failing to parse shuttle_service version (#219 Thanks @jmwill86)
  • Improved local dev experience and building (#226 #234 #244)
  • A rewrite of shuttle_service::Service to make it easier for users to implement custom services (#225)
  • cargo shuttle now fails with exit code 1 to improve its use in scripting (#166)
  • Improved docs (#243 #245 Thanks @lilianmoraru and @Xavientois)
  • Started switching to CircleCI

Breaking changes

Any service that used the (shared Postgres) PgPool would have had the following main function:

async fn rocket(pool: PgPool) -> shuttle_service::ShuttleRocket {
    // Create service here
}

And a sqlx-postgres feature for shuttle-service. With the support of more databases, this PgPool now needs to explicitly define what kind of database instance it will connect to using argument attributes. This can be done by adding #[shared::Postgres] to the attribute:

async fn rocket(#[shared::Postgres] pool: PgPool) -> shuttle_service::ShuttleRocket {
    // Create service here
}