Skip to content

Conversation

@joseluisq
Copy link
Owner

@joseluisq joseluisq commented Sep 27, 2025

This PR introduces the first beta version v2.0.0-beta.1 that includes significant improvements over the current v1.

rust-linux-darwin-builder Docker image remains multi-arch (linux/amd64 and linux/arm64).

Below are the main changes included in this beta release:

Rust version

1.87.0

Docker image optimizations

The Docker image is optimized to leverage caching, improve on resource utilization (e.g. size) and speed up build time.

  • Image layers are split up into separate Docker images:
    • OSXCross & SDK (base image):
    • Rust toolchains (default): This Docker image provides the OSXCross & SDK and Rust toolchains for cross-compiling to linux and darwin targets.
    • Rust toolchains with built-in C libraries (optional): This Docker image provides Rust toolchains along with additional C libraries commonly used in Rust projects like ZLib and OpenSSL. libpq is in progress.

Docker images provided:

Docker images are available in both Docker Hub and GitHub Container Registry (GHCR).

  1. Rust toolchains (default):
    • docker pull ghcr.io/joseluisq/rust-linux-darwin-builder:2.0.0-beta.1
    • docker pull joseluisq/rust-linux-darwin-builder:2.0.0-beta.1
  2. Rust tolchains with built-in C libraries (optional):
    • docker pull ghcr.io/joseluisq/rust-linux-darwin-builder:2.0.0-beta.1-libs
    • docker pull joseluisq/rust-linux-darwin-builder:2.0.0-beta.1-libs

For using only the OSXCross & SDK, have a look at the joseluisq/docker-osxcross.

Rust toolchains

Rust programs can cross-compile for those targets below, either from the linux/arm64 or linux/amd64 Docker image variant, so users can take advantage of them in native environments.

  • aarch64-apple-darwin
  • aarch64-unknown-linux-gnu
  • aarch64-unknown-linux-musl
  • x86_64-apple-darwin
  • x86_64-unknown-linux-musl
  • x86_64-unknown-linux-gnu

Built-in C libraries

  • ZLib 1.3.1
  • OpenSSL 3.5.4
  • libpq 15.6 (in progress)

Cross-compilation improvements

  • We fixed several issues related to cross-compilation for both linux and darwin targets especially those related to cross-compiling Rust programs that depend on C libraries like OpenSSL and ZLib.

Cross-compilation tests

We improved cross-compilation testing for several Rust apps and C libraries like ZLib and OpenSSL.

See our test suite in Makefile and tests/ folder.

CI

  • Move from Cirrus CI to GitHub Actions.

Breaking changes

Please pay attention to the following breaking changes:

  • The base OS image is now based on Debian 13-slim (Trixie).
  • Starting from v2.x, the version number is no longer bound to a particular Rust version as it was before in v1.x.
    This change should help us to deliver bug fixes and improvements without waiting for the next Rust release.
  • The default Docker image no longer includes built-in C libraries like ZLib and OpenSSL.
    Users who need these libraries should use the -libs Docker image variant.
  • Removed Rust arm-linux-gnueabihf-gcc toolchain (but it can be added later if requested).
  • scripts/git-credential-ghtoken file is removed as GitHub Actions provides built-in support for authentication using GITHUB_TOKEN.

If you encounter any issues, please don't hesitate to let us know or give us a hand.

@semanticdiff-com
Copy link

semanticdiff-com bot commented Sep 27, 2025

Review changes with  SemanticDiff

Changed Files
File Status
  .cirrus.yml  0% smaller
  .dockerignore Unsupported file format
  .github/workflows/devel.yml  0% smaller
  .github/workflows/release-beta.yml  0% smaller
  .github/workflows/release.yml  0% smaller
  Dockerfile Unsupported file format
  Makefile Unsupported file format
  README.md Unsupported file format
  docker/amd64/base/Dockerfile Unsupported file format
  docker/amd64/base/cargo.toml Unsupported file format
  docker/amd64/libs/Dockerfile Unsupported file format
  docker/arm64/base/Dockerfile Unsupported file format
  docker/arm64/base/cargo.toml Unsupported file format
  docker/arm64/libs/Dockerfile Unsupported file format
  scripts/get-latest-release Unsupported file format
  scripts/git-credential-ghtoken Unsupported file format
  tests/app/Cargo.lock Unsupported file format
  tests/app/Cargo.toml Unsupported file format
  tests/app/src/main.rs  0% smaller
  tests/openssl/Cargo.lock Unsupported file format
  tests/openssl/Cargo.toml Unsupported file format
  tests/openssl/src/main.rs  0% smaller
  tests/zlib/Cargo.lock Unsupported file format
  tests/zlib/Cargo.toml Unsupported file format

@joseluisq joseluisq self-assigned this Oct 7, 2025
@joseluisq joseluisq added enhancement New feature or request ARM64 `ARM64` Docker image variant AMD64 `x86_64` Docker image variant labels Oct 7, 2025
------
 > exporting to docker image format:
------
------
 > importing to docker:
------
ERROR: failed to build: failed to solve: rpc error: code = Unknown desc = write /root/.rustup/toolchains/1.87.0-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgimli-605c467c05f27091.rlib: no space left on device
Reference
Check build summary support
Error: buildx failed with: ERROR: failed to build: failed to solve: rpc error: code = Unknown desc = write /root/.rustup/toolchains/1.87.0-x86_64-unknown-linux-gnu/lib/rustlib/aarch64-unknown-linux-gnu/lib/libgimli-605c467c05f27091.rlib: no space left on device
@joseluisq joseluisq changed the title v2.0 v2.0.0-beta.1 Oct 7, 2025
@joseluisq joseluisq force-pushed the v2.0.0 branch 2 times, most recently from d3a77d4 to 44eb85c Compare October 30, 2025 22:41
@joseluisq joseluisq force-pushed the v2.0.0 branch 5 times, most recently from 75c93b8 to 52fc789 Compare October 31, 2025 00:19
@joseluisq joseluisq force-pushed the v2.0.0 branch 6 times, most recently from adc2ad9 to edf3135 Compare October 31, 2025 01:22
@joseluisq joseluisq marked this pull request as ready for review October 31, 2025 02:04
@joseluisq joseluisq force-pushed the v2.0.0 branch 2 times, most recently from 26ace7b to 7ebe5f3 Compare October 31, 2025 10:42
@joseluisq joseluisq added this to the v2.0.0-beta.1 milestone Oct 31, 2025
@joseluisq joseluisq merged commit 160fa6a into master Oct 31, 2025
2 checks passed
@joseluisq joseluisq deleted the v2.0.0 branch October 31, 2025 13:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AMD64 `x86_64` Docker image variant ARM64 `ARM64` Docker image variant enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants