I would advise not using the
viewport stretch mode as it doesn't scale the rendering buffer like you'd expect it (resulting in pixelated graphics). I wouldn't recommend the
2d stretch mode either, because it pretty much requires the use of a
keep aspect ratio mode (which means you'll often get black bars) and will dumbly rescale your GUI (which isn't always what you want, this is true especially for desktop games).
The best (and most involved) solution is likely to use
disabled scaling mode, and
ignore aspect ratio, and to handle GUI resizing yourself using control scaling and anchoring. To adjust the game zoom, you can use a camera. This way, you support most aspect ratios without any black bars.
Regardless of what scaling mode you use, properly handling hiDPI is still a problem, unfortunately Godot currently has no hiDPI facilities for games (it's only for the editor as of 2.1.2).