voyagegroup / popuko

A helpful operation bot for GitHub. This helps to assign a reviewer, to merge a pull request, and to notify an unmergeable pull request with a comment as a command interactively.
Other
76 stars 10 forks source link

Rewrite with Rust #153

Open tetsuharuohzeki opened 7 years ago

tetsuharuohzeki commented 7 years ago
tetsuharuohzeki commented 7 years ago

If we rewrite this with Rustlang, we need to consider to spawn a thread.

Go-routine is very light weight, but Rust's std::thread is OS' native thread. It's not light weight just like Go-routine.

Instead, it might be better to use future-rs, fiber-rs, tokio-rs, or mio.

tetsuharuohzeki commented 7 years ago

We accept Golang because it's go-routine is suitable to the usecase of a remote api client. There are many pause time to wait a returning a result from a remote server, and this application would require to spawn many threads to handle many incoming request and calls many remote api. For this purpose, Go-routine is very reasonable mechanism.

When we rewrite this, we thought node.js as alternative approach instead of Golang. It's async I/O model is also reasonable for our purpose. Then, however, we wont to focus simply deploying without Docker or other virtualization approach. We wont to deploy only the executable binary and a few configuration files. node.js requires many dependency modules into local's ./node_modules/ dir. We need to pack them into a tar ball before deploying it. It's not our requirement.