Comparisons between the go/js sdks

Were there any comparisons done between the js and go sdks?
I am starting a new project so both can work. I see that the Go sdk has more example and has a longer lifetime. Are there features implemented in go that are not yet implemented for the JS sdk?
Was there any performance comparison done between workers running go and js?
Go usually wins when it comes to performance, but it’s not always by a large margin especially if the majority of what the server does is IO, If the go worker substancially outperforms the js one though then this is important.

Hi! I’m using the TS SDK extensively in production.

Can’t say how both compare in terms of performance, I would be interested in seeing real metrics from an implementation in both SDKs!

However, I can speak about some things that come to mind:

I see that the Go sdk has more example and has a longer lifetime.

True! Go SDK has been around longer than the TS SDK.

Are there features implemented in go that are not yet implemented for the JS sdk?

Up until now, Go (and Java) SDK(s) had Workflow Updates, but now in TS SDK 1.9.0 we have experimental workflow updates support. It’s still in release candidate, but the team has announced in Slack it is production ready and will reach GA early January 2024. I’ve played around with it (using @next version) and it’s working, at least locally…

I don’t feel there’s anything you can do in Go that you can’t in TS, regarding the Temporal SDK at least.

especially if the majority of what the server does is IO

Temporal is heavily IO-based. I’d say that if you have a specific CPU-heavy workload, Go might be a slightly better fit. If not, they’d be very similar.

Nice to point out that you can easily support this in Nodejs too by either running your CPU-intensive activitites in node:worker_threads or a nicer abstraction like Piscinajs or threads.js

I would also expect Go’s memory footprint to be a bit smaller than Node’s, but I can’t affirm it since I don’t have any data for this statement.

Now, onto my personal opinion: I feel writing workflows in Typescript is a little bit more straightforward than Go, although Go is a bit easier to test since the ecosystem is less fragmented.

1 Like