vagrant/docs/changes/changes_04x_05x.md

86 lines
4.0 KiB
Markdown

---
layout: documentation
title: Changes - 0.4.x to 0.5.x
---
# Changes in Vagrant 0.5.x
## VirtualBox 3.2 Requirement
Although this has been true since Vagrant 0.4.2, I want to make a brief
note of it here in a more prominent release announcement. Vagrant now only
supports VirtualBox 3.2.x. Supporting 3.1.x in addition to 3.2.x was introducing
complicated branch logic in the internals of Vagrant, opening up many areas
for bugs to easily slip through. Because of this, I've decided to focus on VirtualBox
3.2.x. If you must use VirtualBox 3.1.x, please use an earlier version of Vagrant
(0.4.1 works nicely).
## Box URL Specification in Vagrantfile
Up until this point, the steps to share a project have been two-fold:
1. Checkout the project with the Vagrantfile and associated files
1. Ask coworker to download a box from some URL if they haven't already
This is now combined into a single step, since a box URL can be specified
with the `config.vm.box_url`. During a `vagrant up`, if the box specified
with `config.vm.box` doesn't exist, then Vagrant will download
the box from this URL under the configured name.
## NFS Shared Folders
It is a well known fact that VirtualBox shared folder performance degrades
rapidly as the number of files in the shared folders increases (or if you
don't know this now, you'll find out in the future as your project grows).
Having worked on many multi-thousand file web projects, my coworkers and I
quickly found that VirtualBox shared folders were too slow, and we had to
resort to using tools such as rsync or unison to sync the "/vagrant" folder
to some other non-shared-folder directory. This manual syncing process went
against everything Vagrant believes in: not getting in your way and making
development easier.
We found that an easy solution was to punt VirtualBox shared folders and
use NFS (http://en.wikipedia.org/wiki/Network_File_System_(protocol)) instead.
Therefore, Vagrant 0.5 comes with built-in support for setting up and mounting
NFS shared folders. If you're finding that your shared folders are becoming
much slower than your native file system, I recommend you switch to using NFS.
More details, including benchmarks, can be found at the [NFS documentation page](/docs/nfs.html).
## SIGINT (Ctrl-C) Finally Works
Thanks to some heavy internal refactoring and all out change, SIGINT (Ctrl-C)
finally works during `vagrant` commands! During Vagrant 0.1 to 0.2, Vagrant
used to leave VirtualBox in a broken state if you did Ctrl-C. And for 0.3 to
0.4, it used to exit, but you were forced to manually clean up after Vagrant.
And if you did a SIGINT before Vagrant could persist the VM UUID, then
`vagrant destroy` didn't even work! UGH!
But now, SIGINT anytime you want, and Vagrant will properly clean up after
itself. Yes, you can even send an INT signal during an import or export,
and everything will work out.
And, if you don't actually care about a clean exit, just press Ctrl-C
again and any Vagrant commands will immediately exit.
## Huge Internal Changes
Most of the work from 0.4.x to 0.5.x has been "under the hood" in preparation
for future features. I expect these changes to bring about more stability in
the long run to Vagrant, while possibly causing some very minor short term
bugs, though my coworkers and I have been using Vagrant 0.5 in-house for a few
weeks now without issue.
## The Future
Since this release was mostly internals, despite a couple big new features, I think it is important
that I talk a bit about my plans for the future of this project. Vagrant 0.6 will
be a _huge_ release and the features are already set for it, they just need to be
developed. More details on this will be available to the mailing list as the
features are developed.
Besides pure Vagrant releases, an official community-powered Vagrant box listing
website has been under development and will be deployed and available shortly.
And finally, before Vagrant 0.6, I'm going to take the time to redo the getting
started guide and updating the screencast as well.