Hacker News new | ask | show | jobs
by wyager 3723 days ago
Why go? I can't think of any reason to prefer Go over any other language for this project. I'd prefer a security-oriented program to be written in a safer language, actually.
1 comments

Could you explain what you mean by "safer"? If you mean memory safe or free from undefined behavior, Go is exactly that. If you mean a language that has excellent native crypto libraries rather than wrappers over openSSL, Go provides that too. To answer your specific query, Go makes more sense for a LE client compared to Python because you'd simply need to run a binary instead of fiddling around with the source on your server.
Go is not memory safe. It admits null pointers and a whole host of incompleteness bugs.

Rust and Haskell are both examples of safe languages. These languages admit very few bug classes. Both also compile to binaries; I'm not sure why you're touting that as a feature of Go.

That's not even a useful feature in this case. Running a python program is just as easy as running a binary from the user's perspective.

“simply running a binary”:

  - download letsencrypt-auto  
  - ./letsencrypt-auto
”fiddling around with the source”:

  - download letsencrypt.tar.gz
  - extract letsencrypt.tar.gz
  - ./letsencrypt-auto
(and there might even be a package available!)
This is assuming you have the correct version of python installed, right? What if you were on CentOS and the python version is 2.6? Or on Alpine and you simply didn't have python at all?
What if you download a binary and a dynamic library is missing? (This is what happens with GHC on Alpine. Binaries will expect glibc. Packages fix this problem, but they also fix the Python problems.)

Another example: I recently wanted to run IDA on Arch Linux, but there are no 32-bit Qt5 packages. Compiling Qt5 is more painful than installing Python.