Volta Known Issues and Limitations

Volta is only a technology preview at this point and the code is still experimental, so you may encounter issues when using it.  Below are some of the things you should be aware of.

Library Download Times

At run time a Volta application downloads many files from the server, one for each class that is used.  The classes are loaded lazily, i.e. not downloaded until they are needed, so initial application load time is not affected by classes not used immediately.  However, because of the number of files often required to support an application, load times can be affected.  In future versions of the technology preview we plan to add additional intelligence to the way we compile and load assemblies to address this.

Visual Basic Language Support

One of the benefits of Volta compiling to MSIL before the destination runtime, rather than source-to-source translation, is that developers can use multiple .NET programming languages to build Volta applications and controls, including C# and Visual Basic. However, currently you will encounter several limitations when using Visual Basic, including:

  • Late binding is not supported.
  • Services from My (such as User, Computer, etc.) are not supported.

The following are also unsupported unless explicitly specified otherwise:

  • Conversion functions. For example, the Cint conversion function works only if the underlying type supports the conversion.
  • Helpers and VB6 legacy. For example, the Beep method is unsupported.

Volta Compiler

  • The JavaScript output of the Volta compiler is not fully optimized.
  • There is no source and line info for unparsable JavaScript in attributes.

Libraries

  • The Volta libraries provide limited support for the Base Class Library (BCL).
  • The Volta libraries provide minimum reflection support.
  • The Volta libraries don’t support multi-threading.

Tier Splitting

  • Only subclasses of Object can be tier split.
  • The serialization between the two tiers is not very fast.
  • The Visual Studio support for tier splitting supports only one server.
  • The server URI can only be specified as an attribute argument (i.e., in source code). Consequently deploying to a different server requires recompiling the code.

Imports

  • Binding through the Import attribute does not support arrays.

Other

  • Concurrent debugging multiple Volta applications is not supported.