This is an automated email from the ASF dual-hosted git repository.

hgruszecki pushed a commit to branch fix-windows-sdk-build
in repository https://gitbox.apache.org/repos/asf/iggy.git

commit 52fddfc90b21888955e90ce4e329f93636b47cd7
Author: Hubert Gruszecki <[email protected]>
AuthorDate: Wed Mar 18 14:30:37 2026 +0100

    fix(sdk): fix broken Windows build for SDK and CLI
    
    The Rust SDK and CLI are cross-platform but were never
    compiled on Windows, allowing regressions to go
    undetected. iggy-server does not support Windows (it
    requires Linux io_uring), so only -p iggy -p iggy-cli
    are built.
    
    The posix_fadvise cfg guard was #[cfg(not(target_os =
    "macos"))], which is true on Windows. Since the nix
    crate is absent on Windows (unix-only dep), this caused
    an unresolved crate error. Changed to #[cfg(unix)].
    
    The new build-windows-sdk task follows the same pattern
    as build-aarch64-gnu and build-macos-aarch64: listed in
    components.yml, routed to windows-latest in _test.yml,
    and handled in the pre-merge action. The disk cleanup
    step is guarded to Linux-only since it uses sudo and
    Linux-specific paths.
    
    Bumps iggy, iggy_common, iggy_binary_protocol to
    0.9.3-edge.1 and iggy-cli to 0.11.3-edge.1.
---
 .github/actions/rust/pre-merge/action.yml                | 7 +++++++
 .github/config/components.yml                            | 1 +
 .github/workflows/_test.yml                              | 1 +
 Cargo.lock                                               | 8 ++++----
 Cargo.toml                                               | 8 ++++----
 DEPENDENCIES.md                                          | 8 ++++----
 core/binary_protocol/Cargo.toml                          | 2 +-
 core/cli/Cargo.toml                                      | 2 +-
 core/common/Cargo.toml                                   | 2 +-
 core/common/src/types/segment_storage/messages_reader.rs | 4 ++--
 core/sdk/Cargo.toml                                      | 2 +-
 foreign/python/Cargo.toml                                | 2 +-
 12 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/.github/actions/rust/pre-merge/action.yml 
b/.github/actions/rust/pre-merge/action.yml
index 1f544183e..071ce5804 100644
--- a/.github/actions/rust/pre-merge/action.yml
+++ b/.github/actions/rust/pre-merge/action.yml
@@ -31,6 +31,7 @@ runs:
   using: "composite"
   steps:
     - name: Cleanup disk space
+      if: runner.os == 'Linux'
       run: |
         echo "Disk space before cleanup:"
         df -h
@@ -201,3 +202,9 @@ runs:
       if: inputs.task == 'build-macos-aarch64'
       run: cargo build --locked
       shell: bash
+
+    # Windows builds (SDK and CLI only - iggy-server does not support Windows)
+    - name: Build Windows SDK and CLI
+      if: inputs.task == 'build-windows-sdk'
+      run: cargo build --locked -p iggy -p iggy-cli
+      shell: bash
diff --git a/.github/config/components.yml b/.github/config/components.yml
index e77ca3b7d..96422ed77 100644
--- a/.github/config/components.yml
+++ b/.github/config/components.yml
@@ -114,6 +114,7 @@ components:
       - "build-aarch64-gnu"
       - "build-aarch64-musl"
       - "build-macos-aarch64"
+      - "build-windows-sdk"
 
   # CLI component
   rust-cli:
diff --git a/.github/workflows/_test.yml b/.github/workflows/_test.yml
index 4a713d3ca..88e311f8a 100644
--- a/.github/workflows/_test.yml
+++ b/.github/workflows/_test.yml
@@ -42,6 +42,7 @@ jobs:
     runs-on: ${{
       (inputs.task == 'build-aarch64-gnu' || inputs.task == 
'build-aarch64-musl') && 'ubuntu-24.04-arm' ||
       inputs.task == 'build-macos-aarch64' && 'macos-14' ||
+      inputs.task == 'build-windows-sdk' && 'windows-latest' ||
       'ubuntu-latest'
       }}
     timeout-minutes: 60
diff --git a/Cargo.lock b/Cargo.lock
index dffee4844..5421abad9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -5124,7 +5124,7 @@ checksum = 
"cd62e6b5e86ea8eeeb8db1de02880a6abc01a397b2ebb64b5d74ac255318f5cb"
 
 [[package]]
 name = "iggy"
-version = "0.9.2-edge.1"
+version = "0.9.3-edge.1"
 dependencies = [
  "async-broadcast",
  "async-dropper",
@@ -5212,7 +5212,7 @@ dependencies = [
 
 [[package]]
 name = "iggy-cli"
-version = "0.11.2-edge.1"
+version = "0.11.3-edge.1"
 dependencies = [
  "ahash 0.8.12",
  "anyhow",
@@ -5325,7 +5325,7 @@ dependencies = [
 
 [[package]]
 name = "iggy_binary_protocol"
-version = "0.9.2-edge.1"
+version = "0.9.3-edge.1"
 dependencies = [
  "bytemuck",
  "bytes",
@@ -5335,7 +5335,7 @@ dependencies = [
 
 [[package]]
 name = "iggy_common"
-version = "0.9.2-edge.1"
+version = "0.9.3-edge.1"
 dependencies = [
  "aes-gcm",
  "ahash 0.8.12",
diff --git a/Cargo.toml b/Cargo.toml
index 539251436..bd6fb22a4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -158,10 +158,10 @@ humantime = "2.3.0"
 hwlocality = "1.0.0-alpha.11"
 iceberg = "0.8.0"
 iceberg-catalog-rest = "0.8.0"
-iggy = { path = "core/sdk", version = "0.9.2-edge.1" }
-iggy-cli = { path = "core/cli", version = "0.11.2-edge.1" }
-iggy_binary_protocol = { path = "core/binary_protocol", version = 
"0.9.2-edge.1" }
-iggy_common = { path = "core/common", version = "0.9.2-edge.1" }
+iggy = { path = "core/sdk", version = "0.9.3-edge.1" }
+iggy-cli = { path = "core/cli", version = "0.11.3-edge.1" }
+iggy_binary_protocol = { path = "core/binary_protocol", version = 
"0.9.3-edge.1" }
+iggy_common = { path = "core/common", version = "0.9.3-edge.1" }
 iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.2.1-edge.1" }
 integration = { path = "core/integration" }
 journal = { path = "core/journal" }
diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md
index a4069999c..ca963183c 100644
--- a/DEPENDENCIES.md
+++ b/DEPENDENCIES.md
@@ -446,14 +446,14 @@ ident_case: 1.0.1, "Apache-2.0 OR MIT",
 idna: 1.1.0, "Apache-2.0 OR MIT",
 idna_adapter: 1.2.1, "Apache-2.0 OR MIT",
 if_chain: 1.0.3, "Apache-2.0 OR MIT",
-iggy: 0.9.2-edge.1, "Apache-2.0",
+iggy: 0.9.3-edge.1, "Apache-2.0",
 iggy-bench: 0.4.1-edge.1, "Apache-2.0",
 iggy-bench-dashboard-server: 0.6.3-edge.1, "Apache-2.0",
-iggy-cli: 0.11.2-edge.1, "Apache-2.0",
+iggy-cli: 0.11.3-edge.1, "Apache-2.0",
 iggy-connectors: 0.3.2-edge.1, "Apache-2.0",
 iggy-mcp: 0.3.2-edge.1, "Apache-2.0",
-iggy_binary_protocol: 0.9.2-edge.1, "Apache-2.0",
-iggy_common: 0.9.2-edge.1, "Apache-2.0",
+iggy_binary_protocol: 0.9.3-edge.1, "Apache-2.0",
+iggy_common: 0.9.3-edge.1, "Apache-2.0",
 iggy_connector_elasticsearch_sink: 0.3.2-edge.1, "Apache-2.0",
 iggy_connector_elasticsearch_source: 0.3.2-edge.1, "Apache-2.0",
 iggy_connector_iceberg_sink: 0.3.2-edge.1, "Apache-2.0",
diff --git a/core/binary_protocol/Cargo.toml b/core/binary_protocol/Cargo.toml
index 12ed184fd..e3ec5ecdd 100644
--- a/core/binary_protocol/Cargo.toml
+++ b/core/binary_protocol/Cargo.toml
@@ -17,7 +17,7 @@
 
 [package]
 name = "iggy_binary_protocol"
-version = "0.9.2-edge.1"
+version = "0.9.3-edge.1"
 description = "Wire protocol types and codec for the Iggy binary protocol. 
Shared between server and SDK."
 edition = "2024"
 license = "Apache-2.0"
diff --git a/core/cli/Cargo.toml b/core/cli/Cargo.toml
index cbd35a625..2a631cb24 100644
--- a/core/cli/Cargo.toml
+++ b/core/cli/Cargo.toml
@@ -17,7 +17,7 @@
 
 [package]
 name = "iggy-cli"
-version = "0.11.2-edge.1"
+version = "0.11.3-edge.1"
 edition = "2024"
 authors = ["[email protected]"]
 repository = "https://github.com/apache/iggy";
diff --git a/core/common/Cargo.toml b/core/common/Cargo.toml
index 74d9dab1e..d3d3794ba 100644
--- a/core/common/Cargo.toml
+++ b/core/common/Cargo.toml
@@ -16,7 +16,7 @@
 # under the License.
 [package]
 name = "iggy_common"
-version = "0.9.2-edge.1"
+version = "0.9.3-edge.1"
 description = "Iggy is the persistent message streaming platform written in 
Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing 
millions of messages per second."
 edition = "2024"
 license = "Apache-2.0"
diff --git a/core/common/src/types/segment_storage/messages_reader.rs 
b/core/common/src/types/segment_storage/messages_reader.rs
index e17092670..7cd4c11b2 100644
--- a/core/common/src/types/segment_storage/messages_reader.rs
+++ b/core/common/src/types/segment_storage/messages_reader.rs
@@ -52,8 +52,8 @@ impl MessagesReader {
             .error(|e: &std::io::Error| format!("Failed to open messages file: 
{file_path}. {e}"))
             .map_err(|_| IggyError::CannotReadFile)?;
 
-        // posix_fadvise() doesn't exist on MacOS
-        #[cfg(not(target_os = "macos"))]
+        // posix_fadvise() is Linux-only in the nix crate
+        #[cfg(target_os = "linux")]
         {
             let _ = nix::fcntl::posix_fadvise(
                 &file,
diff --git a/core/sdk/Cargo.toml b/core/sdk/Cargo.toml
index 6bee2175f..ab8953b24 100644
--- a/core/sdk/Cargo.toml
+++ b/core/sdk/Cargo.toml
@@ -17,7 +17,7 @@
 
 [package]
 name = "iggy"
-version = "0.9.2-edge.1"
+version = "0.9.3-edge.1"
 description = "Iggy is the persistent message streaming platform written in 
Rust, supporting QUIC, TCP and HTTP transport protocols, capable of processing 
millions of messages per second."
 edition = "2024"
 license = "Apache-2.0"
diff --git a/foreign/python/Cargo.toml b/foreign/python/Cargo.toml
index 5b6ee40ed..d4ac12165 100644
--- a/foreign/python/Cargo.toml
+++ b/foreign/python/Cargo.toml
@@ -31,7 +31,7 @@ repository = "https://github.com/apache/iggy";
 [dependencies]
 bytes = "1.11.1"
 futures = "0.3.32"
-iggy = { path = "../../core/sdk", version = "0.9.2-edge.1" }
+iggy = { path = "../../core/sdk", version = "0.9.3-edge.1" }
 pyo3 = "0.28.2"
 pyo3-async-runtimes = { version = "0.28.0", features = [
     "attributes",

Reply via email to