3 ms·
The benefit would be EASY cross platform support. From experience building Vagrant installers: it's a pain in the butt. Shipping a single binary client would pr
by mitchellh 13y ago
The benefit would be EASY cross platform support. From experience building Vagrant installers: it's a pain in the butt. Shipping a single binary client would probably simplify things greatly.
- ddollar 13y agoThere are two reasons I rewrote Foreman in Go. You hit one of them square on the head. A single binary with no dependencies that can be cross-compiled on a Heroku dyno makes things much simpler. Foreman was originally written in Ruby which ideally means it runs on any machine with a Ruby interpreter. When you get down to it, though, the differences in fork/exec between Ruby 1.8, 1.9, JRuby, Rubinius, etc make this a nightmare scenario of a different sort. If you go to https://gobuild.herokuapp.com/ddollar/forego/master/darwin/amd64 https://gobuild.herokuapp.com/ddollar/forego/master/darwin/a... you get a working program as a single binary in one step. Using bsdiff I can even ship binary diffs for fast upgrades (this is how `foreman update` works in the new version) Oh and as a side effect the new Foreman is quite a lot faster to start up (Rubygems initialization is sloooooow)
- warmwaffles 13y agoI had no clue `forego` was actually available. This is incredible.
- kungfooguru 13y agoYes! I love this way more than any speed upgrade. When is Vagrant being redone in Go ;)