Skip to content

Conversation

@csvance
Copy link
Contributor

@csvance csvance commented Nov 17, 2025

Hey @tanmaykm, I updated everything to use the gRPCClient.jl name instead of gRPCClient2.jl, everything builds and tests are passing. I kept the commits that remove the 0.1 version and add the new version separate to hopefully make it easier to review.

Besides any code review/changes, the main thing that needs to be done is to integrate CI/docs/coverage to the repository. Right now all of the links in README.md are not going to the right place.

It's also worth noting that some tests (streaming RPC) only pass on Julia 1.12 and nightly. I think this is likely due to the upgrade in libcurl versions that happened in 1.12. My plan is to support 1.12+ going forward and stay ontop of any breakages in the future rather than focus on the past. Of course it would be nice to support 1.10 LTS, but I could also spend that time working on a Julia gRPC server package.

Longer term plans I want to take the work you did with the Go test server and rework the tests and benchmarks to use that. That way we have both standardized test services (ie routeguide) and also don't have the problem of GIL contention in benchmarking. Right now my benchmarks are being bottlenecked by the Python test server (83% GIL contention) so I can't truly measure the performance ceiling of the Julia client.

@simsurace
Copy link

Could we still make the package installable on LTS and just disable streaming RPC below 1.12?

@csvance
Copy link
Contributor Author

csvance commented Nov 18, 2025

Could we still make the package installable on LTS and just disable streaming RPC below 1.12?

I'd be fine with that, just need to look into how to check the current Julia version at runtime. We can throw an exception if someone instantiates a streaming client which shouldn't have a meaningful performance impact. We can also conditionally run the streaming tests.

@simsurace
Copy link

You can do it at compile time with

@static if VERSION < v"1.12"
    # do things differently
end

@csvance
Copy link
Contributor Author

csvance commented Nov 18, 2025

You can do it at compile time with

@static if VERSION < v"1.12"
    # do things differently
end

Thanks, got this integrated in a way that works at compile time but also will tell you that streaming is not supported without Julia 1.12. To the best of my knowledge unary RPC are stable on 1.10-1.11, the stress tests in workloads.jl run indefinitely.

One thing to keep in mind with Julia 1.10: any task making gRPC calls will have sticky set. This happens even when I remove my only usage of @async inside socket_callback:

using Test 
using ProtoBuf 
using gRPCClient
using Base.Threads

include("gen/test/test_pb.jl")

function f()
  client = TestService_TestRPC_Client("localhost", 8001)
  
  task = @sync begin 
      @spawn begin 
          grpc_sync_request(client, TestRequest(1, zeros(UInt64, 1)))
      end
  end 
  
  @test !task.sticky
end

f()

The above test passes for Julia 1.12 but fails for Julia 1.10.

- CI now works purely with Github actions instead of needing a Docker container for running a test server for gRPC
- Julia 1.10 LTS as a CI target
Copy link
Member

@tanmaykm tanmaykm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.
I think we can merge once we have a 👍 for the license change.

@tanmaykm tanmaykm merged commit d08e2fb into JuliaIO:main Nov 20, 2025
1 check passed
@tanmaykm
Copy link
Member

Also planning to move this repo to JuliIO. I think we can register once the move happens?

@csvance
Copy link
Contributor Author

csvance commented Nov 20, 2025

Also planning to move this repo to JuliIO. I think we can register once the move happens?

Sounds good! Once we move it all that is left is to setup CI/docs/tagbot and update README.md with the new links / badges.

I should start putting together a package announcement.

@tanmaykm
Copy link
Member

Transfer initiated. Should be at https://github.com/JuliaIO/gRPCClient.jl

@csvance
Copy link
Contributor Author

csvance commented Nov 20, 2025

Transfer initiated. Should be at https://github.com/JuliaIO/gRPCClient.jl

Awesome! I started working on the package announcement + README updates. Going to include a fully self contained sync unary example in the README.md so people can quickly get up and running.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants