Release day 2021.12.28

Published on 2021-12-28

It’s Release Day again!

Another two weeks of work has been done and it’s time to celebrate another release day!

This release came with a lot of new features and improvements and focus on compatibility and stability.

News

Ok now let’s get to the point. What’s new in this version?

New env vars management

Environment variables are important when working with Bottles, there are many cases in which we can use them, for example to pass instructions to the DXVK HUD.

So it is essential that these are easily manageable, which was not before this update. In fact, before you had to put them all on a single text field, boring and difficult when you have a lot of them.

Take a look at how we redesigned it below.

Environment variables dialog

Cute is it?

Now just add the variable name (e.g. DXVK_HUD) and then set its value (e.g. devinfo) and that’s it. To delete it instead .. guess it.

This means two steps are now required and it may seem more inconvenient, but try to imagine it in cases where 3 or more variables are used. Convenient isn’t it?

Caffe

Well we drank a lot of coffee in this release, but this section is not dedicated to that.

Vaniglia has long been Bottles’ default runner. This offers the purest and cleanest experience of WINE possible on Bottles. Happy purists aside, many of us want maximum compatibility and often download third-party runners to achieve this. Well, that’s where Caffe comes in.

Caffe is the second official Bottles runner, built on top of wine-tkg-git (a huge thank you for their immense work, a really great project), it comes with a set of patches that guarantees a high level of compatibility. This runner is built on Arch Linux with a very up-to-date set of libraries and has been tested on the latest versions of Ubuntu, Fedora and of course Arch Linux. In some older distributions it could cause problems and this is where we recommend (again) to use Flatpak, where the runtime is up to date and offers the necessary libraries and tools to run it at its best.

How’s different from Vaniglia?

Well mostly it is well built. Vaniglia was compiled on Ubuntu 20.04 using a set of scripts (build tools) written by us who downloaded the source, applied two essential patches. This however lacked gstreamer and other support essential to having a complete experience with WINE.

Caffe has been tested and found to go where Vaniglia could not, we are sure you will be happy with it.

PS. Vaniglia will not be deprecated for now.

Bottles Runtime 0.2

With the previous release we introduced the Bottles Runtime, a set of libraries that Bottles injects into the environment to improve runner compatibility.

This feature has been made available to all Flatpak users and will soon be available to everyone (unfortunately we didn’t make it in time, we plan to do it for the next release). The big news here is how this runner was created, that is through runtimezilla, a project that allows you to assemble runtime from a given recipe. This tool allows you to ensure a correct copy of the libraries, avoiding arranged and inconvenient scripts.

In the old runtime some libraries were not loaded correctly and others were missing, with this update the problems have been solved and can now be defined stable.

Stability improvements

This is a stability focused update, we have fixed many bugs and crashes but also improved several areas of the code for better stability.

It may be that you have noticed some random crashes, sometimes without a log. This was caused by an error in the management of tasks, that is, the operations that are performed in async in Bottles. For example, when you install a component, this happens in async to avoid freezing the interface. The error was in the management of the notifications of operations (the menu you see in the headerbar when there are operations in progress), this was updated by a second thread but being the widget spawned on the main thread, in the update phase they could collide causing precisely a crash.

The new management of the tasks takes place through a queue, all the async processes send a request to the manager who creates the task and keeps it updated, so when it is necessary to update it, a direct request will not be made but will act through the manager who in turn will handle the change correctly.

Yes well all technical things that we also struggle to understand :D, let us know if it works.

Coming big changes

A few days ago we tweeted about how dependencies will be provided in Bottles in the future.

It is about providing small archives with just the essential files we need. Since we first introduced our dependency manager, we have made use of tools like cabextract and p7zip to extract files from archives and executables. Normally these are large files and therefore take some time to download depending on the connection you are using. Unimaginable using a data connection. So the perfect solution is to download only the necessary files.

We are working on a platform that automate the process, letting it download the large files, extract the dependencies and provide just those in a small archive (where the license allows it).

The process of adding and maintaining dependencies won’t change that much. At the moment each dependency is supplied with a manifest that lists the steps necessary for Bottles to install it, then a Build section will be added to the manifest, containing all the steps necessary for the platform to download and create the archive, a sort of recipe in short. See an example here.

All other changes

There are a lot of other changes and improvements in this release. Below are other noteworthy ones, for all the others, refer to the GiHub organization.

  • Bottles runtime updated to 0.2
  • Caffe is now the new default runner, falling back to Vaniglia if not available
  • New environment variables management, has also a nice new UI
  • The new Operation manager handle tasks queue to avoid conflicts
  • Improved xwayland support for runners when running in a wayland session
  • Improved compatibility for optimus laptops
  • Prevented value changes in preferences when scrolling on combo boxes
  • Now the Crash Report dialog disable the send button if the report is already sent multiple times
  • The new copy_file action can be used to copy any file during dependency installation
  • Now is possible to rename manually added programs
  • The uninstaller can now remove more than one program in one go (used by dependencies/installers)
  • Improved DLSS support, now is automatically configured
  • Extended the programs search to new directories
  • Fixed onboard (first start-up) freeze on components download
  • Fixed random crashes caused by non-safe thread access
  • Fixed wayland support, was setting the wrong port for xwayland, the new method tests a bunch of ports to find the right one
  • Fixed vkd3d installation, was failing due to a regression in command handling
  • Fixed a crash during bottle creation caused by a non handled exception
  • Fixed random crash saving environment variables
  • Fixed a crash caused by the logger trying to split a None
  • Fixed silent EasyTerm crash when gamemode is enabled but it doesn’t find the executable
  • Fixed wrong environment variables setting on non optimus laptops
  • Fixed a crash caused by a non handled exception of Patool library
  • Fixed Windows version change for winxp, was setting the wrong value for 64bit bottles
  • Fixed a bug during initial checks
  • Chinese (Traditional) translations thanks to @XiaoPanPanKevinPan
  • Italian translations thanks to @AlexzanDev, @phaerrax
  • Czech translations thanks to @SoongVilda
  • Russian translations thanks to @ZSHFan
  • Finnish translations thanks to Jiri Grönroos
  • French translations thanks to @GoudronViande24, @Bloombug, @julroy67
  • Korean translations thanks to @OctopusET, @qogusdn1017
  • Portuguese (Brazil) translations thanks to @redvulps, @davipatricio
  • Vietnamese translations thanks to AD, Giai Ngo
  • Portuguese translations thanks to @Bloombug
  • Polish translations thanks to Krzysztof Marcinek
  • Hindi translations thanks to @athenasaurav
  • Spanish translations thanks to Alberto Cañaveras
  • Indonesian translations thanks to neko
  • German translations thanks to @McLutzifer, @Translator5
  • Japanese translations thanks to @Hebi-no-Sekigae

Thanks to all users who contributed to this release!

~ Bottles’ Developers

Download 2021.12.28

Related Articles

Sponsors

JetBrains GitBook Linode Appwrite Hyperbitz Scaleway

Plus all the donations from the awesome users who support Bottles!

Show more