diff --git a/benchmark/mix.exs b/benchmark/mix.exs index fb10571d5..ab89cbc94 100644 --- a/benchmark/mix.exs +++ b/benchmark/mix.exs @@ -1,6 +1,6 @@ defmodule Benchmark.MixProject do use Mix.Project - @version "1.0.0-rc.1" + @version "1.0.3" def project do [ diff --git a/grpc/CHANGELOG.md b/grpc/CHANGELOG.md index c3be84387..9b61b4a46 100644 --- a/grpc/CHANGELOG.md +++ b/grpc/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## Unreleased +## v1.0.3 (2026-07-27) ### Enhancements @@ -15,6 +15,9 @@ ### Bug Fixes + * Fixed a client supervisor child leak on failed and closed connections in `GRPC.Client.Connection`. + * Fixed Mint adapter connection stability when a stream response process exits unexpectedly, preventing the whole connection process from crashing. + * Fixed a Mint adapter `BadMapError` in `State.stream_response_pid/2`. * Removed the `GRPC.Channel.t()` typespec. It declared `host`/`port` non-nil and `interceptors` as `[]`, but a virtual channel (built with `host: nil`/`port: nil` and a non-empty `interceptors` list) violated the type. Combined with `pick_channel/2`'s `@spec`, this made Dialyzer infer `connect/2` could only return `{:error, _}`, spuriously flagging `{:ok, channel}` matches in downstream code as unreachable. References to the type are now `struct()`. ## v1.0.0 (2026-06-15) diff --git a/grpc/mix.exs b/grpc/mix.exs index 21318bbbd..a5672bcce 100644 --- a/grpc/mix.exs +++ b/grpc/mix.exs @@ -2,7 +2,7 @@ defmodule GRPC.MixProject do use Mix.Project @source_url "https://github.com/elixir-grpc/grpc/tree/master/grpc" - @version "1.0.2" + @version "1.0.3" def project do [ @@ -30,7 +30,7 @@ defmodule GRPC.MixProject do defp deps do [ # {:grpc_core, path: "../grpc_core"}, - {:grpc_core, "~> 1.0.2"}, + {:grpc_core, "~> 1.0.3"}, {:gun, "~> 2.4.0", optional: true}, {:mint, "~> 1.9", optional: true}, {:castore, "~> 1.0", optional: true}, diff --git a/grpc/mix.lock b/grpc/mix.lock index f1aa3db68..052db4885 100644 --- a/grpc/mix.lock +++ b/grpc/mix.lock @@ -8,7 +8,7 @@ "flow": {:hex, :flow, "1.2.4", "1dd58918287eb286656008777cb32714b5123d3855956f29aa141ebae456922d", [:mix], [{:gen_stage, "~> 1.0", [hex: :gen_stage, repo: "hexpm", optional: false]}], "hexpm", "874adde96368e71870f3510b91e35bc31652291858c86c0e75359cbdd35eb211"}, "gen_stage": {:hex, :gen_stage, "1.3.2", "7c77e5d1e97de2c6c2f78f306f463bca64bf2f4c3cdd606affc0100b89743b7b", [:mix], [], "hexpm", "0ffae547fa777b3ed889a6b9e1e64566217413d018cabd825f786e843ffe63e7"}, "googleapis": {:hex, :googleapis, "0.1.0", "13770f3f75f5b863fb9acf41633c7bc71bad788f3f553b66481a096d083ee20e", [:mix], [{:protobuf, "~> 0.12", [hex: :protobuf, repo: "hexpm", optional: false]}], "hexpm", "1989a7244fd17d3eb5f3de311a022b656c3736b39740db46506157c4604bd212"}, - "grpc_core": {:hex, :grpc_core, "1.0.2", "217a0bee1a266dd4f8378629d344f6a555db209011ab37355bfa61a0b9f62eea", [:mix], [{:googleapis, "~> 0.1.0", [hex: :googleapis, repo: "hexpm", optional: false]}, {:jason, ">= 0.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:protobuf, "~> 0.17", [hex: :protobuf, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "73b916dc3f2767bd68f95a35507a9c2b389fb71997fad16558184f40b6fa148a"}, + "grpc_core": {:hex, :grpc_core, "1.0.3", "f638ad846b432c8e1b4c28613001ce5a18cbc95d760b0c662091b37e5ddf97e6", [:mix], [{:googleapis, "~> 0.1.0", [hex: :googleapis, repo: "hexpm", optional: false]}, {:jason, ">= 0.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:protobuf, "~> 0.17", [hex: :protobuf, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8167fa6e06190d229df25b2386173b385add6682f87c27960699439083145f78"}, "gun": {:hex, :gun, "2.4.1", "c3a8bff8e155e1fc8e499216599bb7effbd27bc1985662a8b25016090dc18428", [:make, :rebar3], [{:cowlib, ">= 2.15.0 and < 3.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}], "hexpm", "1450575b4d393aa0811322727b90ad1dd94b5c10026f54a1641785bcbd250384"}, "hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"}, "jason": {:hex, :jason, "1.4.5", "2e3a008590b0b8d7388c20293e9dcc9cf3e5d642fd2a114e4cbbb52e595d940a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b0c823996102bcd0239b3c2444eb00409b72f6a140c1950bc8b457d836b30684"}, diff --git a/grpc_core/mix.exs b/grpc_core/mix.exs index 96324415e..549f80289 100644 --- a/grpc_core/mix.exs +++ b/grpc_core/mix.exs @@ -2,7 +2,7 @@ defmodule GRPC.Core.MixProject do use Mix.Project @source_url "https://github.com/elixir-grpc/grpc_core" - @version "1.0.2" + @version "1.0.3" def project do [ diff --git a/grpc_server/mix.exs b/grpc_server/mix.exs index 7ffcc9e5a..195c7b175 100644 --- a/grpc_server/mix.exs +++ b/grpc_server/mix.exs @@ -2,7 +2,7 @@ defmodule GRPC.Server.MixProject do use Mix.Project @source_url "https://github.com/elixir-grpc/grpc_server" - @version "1.0.2" + @version "1.0.3" def project do [ @@ -34,7 +34,7 @@ defmodule GRPC.Server.MixProject do defp deps do [ # {:grpc_core, path: "../grpc_core"}, - {:grpc_core, "~> 1.0.2"}, + {:grpc_core, "~> 1.0.3"}, {:protobuf, "~> 0.17"}, {:cowboy, "~> 2.14"}, {:cowlib, "~> 2.14"}, diff --git a/grpc_server/mix.lock b/grpc_server/mix.lock index 3e4e19ec2..7d61cbcbe 100644 --- a/grpc_server/mix.lock +++ b/grpc_server/mix.lock @@ -8,7 +8,7 @@ "flow": {:hex, :flow, "1.2.4", "1dd58918287eb286656008777cb32714b5123d3855956f29aa141ebae456922d", [:mix], [{:gen_stage, "~> 1.0", [hex: :gen_stage, repo: "hexpm", optional: false]}], "hexpm", "874adde96368e71870f3510b91e35bc31652291858c86c0e75359cbdd35eb211"}, "gen_stage": {:hex, :gen_stage, "1.3.2", "7c77e5d1e97de2c6c2f78f306f463bca64bf2f4c3cdd606affc0100b89743b7b", [:mix], [], "hexpm", "0ffae547fa777b3ed889a6b9e1e64566217413d018cabd825f786e843ffe63e7"}, "googleapis": {:hex, :googleapis, "0.1.0", "13770f3f75f5b863fb9acf41633c7bc71bad788f3f553b66481a096d083ee20e", [:mix], [{:protobuf, "~> 0.12", [hex: :protobuf, repo: "hexpm", optional: false]}], "hexpm", "1989a7244fd17d3eb5f3de311a022b656c3736b39740db46506157c4604bd212"}, - "grpc_core": {:hex, :grpc_core, "1.0.2", "217a0bee1a266dd4f8378629d344f6a555db209011ab37355bfa61a0b9f62eea", [:mix], [{:googleapis, "~> 0.1.0", [hex: :googleapis, repo: "hexpm", optional: false]}, {:jason, ">= 0.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:protobuf, "~> 0.17", [hex: :protobuf, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "73b916dc3f2767bd68f95a35507a9c2b389fb71997fad16558184f40b6fa148a"}, + "grpc_core": {:hex, :grpc_core, "1.0.3", "f638ad846b432c8e1b4c28613001ce5a18cbc95d760b0c662091b37e5ddf97e6", [:mix], [{:googleapis, "~> 0.1.0", [hex: :googleapis, repo: "hexpm", optional: false]}, {:jason, ">= 0.0.0", [hex: :jason, repo: "hexpm", optional: false]}, {:protobuf, "~> 0.17", [hex: :protobuf, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8167fa6e06190d229df25b2386173b385add6682f87c27960699439083145f78"}, "gun": {:hex, :gun, "2.4.1", "c3a8bff8e155e1fc8e499216599bb7effbd27bc1985662a8b25016090dc18428", [:make, :rebar3], [{:cowlib, ">= 2.15.0 and < 3.0.0", [hex: :cowlib, repo: "hexpm", optional: false]}], "hexpm", "1450575b4d393aa0811322727b90ad1dd94b5c10026f54a1641785bcbd250384"}, "jason": {:hex, :jason, "1.4.5", "2e3a008590b0b8d7388c20293e9dcc9cf3e5d642fd2a114e4cbbb52e595d940a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0 or ~> 3.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "b0c823996102bcd0239b3c2444eb00409b72f6a140c1950bc8b457d836b30684"}, "makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"}, diff --git a/mix.exs b/mix.exs index bc4ef6709..bb5955d9d 100644 --- a/mix.exs +++ b/mix.exs @@ -1,7 +1,7 @@ defmodule GRPC.GRPCRoot do use Mix.Project - @version "1.0.2" + @version "1.0.3" def project do [