> ## Content Index
> Fetch the complete content index at: https://blogs.remobjects.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# Introducing Mercury
- URL: https://blogs.remobjects.com/2021/05/07/mercury/
- Published: 2021-05-07T22:01:28.000Z
- Updated: 2021-05-07T22:01:28.000Z
- Author: marc hoffman
- Tags: #Import 2026-08-17 20:17

We are thrilled to announce the release of [Elements 11](https://blogs.remobjects.com/p/e33e6efe-2b0c-4177-9391-8dbf4a09566b/), and with it its most interesting new feature: the introduction of [**Mercury**](https://www.elementscompiler.com/elements/mercury/?ref=blogs.remobjects.com) as the sixth language supported by our compiler and tool chain.

The goal of Mercury is to breathe a new lease of life into the Visual Basic.NET language — giving it a future beyond the point where Microsoft has stopped its development, bring to it [new features](https://docs.elementscompiler.com/Mercury/LanguageExtensions/?ref=blogs.remobjects.com) and support for modern (current and future) .NET platforms and platform features, and to also take it beyond just the .NET platform to [*all*](https://www.elementscompiler.com/elements/?ref=blogs.remobjects.com#platforms)[ the platforms](https://www.elementscompiler.com/elements/?ref=blogs.remobjects.com#platforms) supported by Elements.

## A Visual Basic Language That Keeps Getting Better

Microsoft [has stated](https://devblogs.microsoft.com/vbteam/visual-basic-support-planned-for-net-5-0/?ref=blogs.remobjects.com) that they do not plan to develop and extend their Visual Basic.NET language further, neither to add new features in general, or even to keep it up to date and compatible with C# and .NET platform capabilities, as *those* get enhanced.

We created Mercury, in part, to provide an alternative for that. As it is shipping now, Mercury not only is 99.9% compatible with Visual Basic.NET as it stands, but it *already* adds a wide range of [language extensions](https://docs.elementscompiler.com/Mercury/LanguageExtensions/?ref=blogs.remobjects.com) and support for C# 9.0 features that will make the VB developers lives easier – from support for [pointers and unsafe code,](https://docs.elementscompiler.com/Mercury/LanguageExtensions/Pointers/?ref=blogs.remobjects.com) over [lazy properties](https://docs.elementscompiler.com/Mercury/LanguageExtensions/LazyProperties/?ref=blogs.remobjects.com) to C#9's new [records](https://docs.elementscompiler.com/Mercury/LanguageExtensions/Records/?ref=blogs.remobjects.com), and more.

It also gains a bunch of language capabilities "for free" by virtue of being part of the [Elements](https://www.elementscompiler.com/?ref=blogs.remobjects.com) compiler tool chain, such as support for [Aspect Oriented Programming](https://docs.elementscompiler.com/Concepts/Aspects/?ref=blogs.remobjects.com) (essentially, fancy attributes that can affect your code et *compile-time*), or [mapped types](https://docs.elementscompiler.com/Mercury/LanguageExtensions/MappedTypes/?ref=blogs.remobjects.com).

And this is just the beginning. Over the coming months and years, we will continue innovating on the language and add more exciting new features and capabilities to it – based on our own ideas, as well as of course user feedback and request (directly to us, and from the [VBLang](https://docs.elementscompiler.com/Mercury/LanguageExtensions/VBLang/?ref=blogs.remobjects.com) community).

And we will keep it up to date with where .NET and C# are going, of course.

Existing VB projects can [easily be converted](https://docs.elementscompiler.com/Mercury/Convert/?ref=blogs.remobjects.com) with a single click, and will build and work with no or very little adjustment. And can then take advantage of new language capabilities, immediately.

## Support for .NET 5.0, 6.0 and Beyond, & Keeping up with C# 9.0 and Beyond

As with the language, we're also committed to what is – for right now at least – the most important target platform for VB developers: the .NET runtime.

As .NET (and C#) evolve, Mercury will keep being updated to support the latest platform versions and features, and also to be kept compatible with features added to new versions of [C#, as it evolves](https://docs.elementscompiler.com/Hydrogene/CSharpEvolution/?ref=blogs.remobjects.com). This means Mercury will be ready to target .NET 6, 7, 8, use APIs created in C# 10, 11 12, and so forth.

## More Platform

Another exciting aspect of Mercury is that it takes the language *beyond* just the .NET platform ecosystem. While Mercury shines as a true successor to VB.NET for existing and new .NET applications, it does not end there.

Mercury brings the VB language *natively* to additional platforms — without reliance on the .NET, Mono or Xamarin runtimes or compatibility layers.

With Mercury, you can use your VB language to build projects for

- Native ("Win32") Windows
- Native Linux
- WebAssembly
- Android, both via the Java-based Android SDK, and the native Android NDK
- Apple's platforms: iOS, iPadOS, macOS, tvOS and watchOS

### Windows

With Mercury, you can now directly target the native Windows APIs – on the same level and with the same performance characteristics as you would from, say, C or C++. No managed runtime, direct memory access, CPU-native code for i386, x86\_64 and (very soon) arm64 that runs directly on the metal.

It's not something you would use use all the time, but it's nice to know you can fall back to a lower level where needed, without having to revert to using C!

### Linux

The same is the case for Linux. Of course .NET-based applications can run on Linux, via Mono or .NET Core. But Mercury *also* lets you write truly native Linux code – again, on the same level as you would with C or C++.

### WebAssembly

The web platform is covered well by ASP.NET on the server side, but what about the client? With Mercury's [WebAssembly](https://docs.elementscompiler.com/Platforms/WebAssembly/?ref=blogs.remobjects.com) support you will write VB code that runs directly in the browser, with full strongly-typed access to your HTML, the DOM, the browser's JavaScript APIs, and even with full native event support using VB's `Handles` syntax. All that without the overhead of the .NET runtime as you have with Blazor.

### Android & Java

Mercury also allows you write apps for Android (using the Java-based SDK that most Android apps are built on, but also the more lower level C-based *native* Android NDK). The entire Android ecosystem and APIs are at your fingertips, without the overhead of a Xamarin compatibility layer. And you can can target the standard Java SDK for desktop and server apps, as well!

### Cocoa

Finally, the same is the case for Apple's platforms. Mercury lets you create projects for all of Apples computers and device, once again putting your code directly in touch with the great Cocoa APIs provided by Apple, without unnecessary wrappers or compatibility layers. Mercury even extends the language to make it intuitive to work with Cocoas [unique method naming conventions](https://docs.elementscompiler.com/Mercury/LanguageExtensions/MultiPartMethodNames/?ref=blogs.remobjects.com).

## Development Environments

Visual Basic.NET developers can switch to Mercury and continue using it in the comfort of Visual Studio, the IDE they already know and love.

Alternatively, Mercury also comes with its on native and light-weight IDEs both for Windows and also the Mac – called [Water](https://www.elementscompiler.com/elements/water/?ref=blogs.remobjects.com) and [Fire](https://www.elementscompiler.com/elements/fire/?ref=blogs.remobjects.com), respectively. These IDEs are designed form the ground up for Mercury and the Elements compiler tool chain.

All three IDE options support all the features and target platforms of Mercury.

## Mixing C# and VB in the Same Project

Mercury is part of a language family and compiler tool chain that has been stable and growing for over 15 years now. One of the many advantages of the Elements compiler is, that it allows you to mix and match any of its six supported languages in your project. That means if you ever have a snippet of C# code you just want to use in your project, without translating it, [you can now do so](https://www.remobjects.com/tv/?video=BBC307C0288912D66EBCCCA26BEA3F8DB815FE44&ref=blogs.remobjects.com) – without needing a separate class library project for it.

This is also true for the other four languages: [Oxygene](https://www.elementscompiler.com/elements/oxygene/?ref=blogs.remobjects.com) (Object Pascal), Swift, Java and Go.

# Get Mercury Now

After over a year of development and an extensive beta program, Mercury is available now, standalone or as part of the full Elements bundle. You can [evaluate Mercury for free without any technical limitations for 30 days](https://www.elementscompiler.com/elements/download/?ref=blogs.remobjects.com). Full licenses for Mercury are available [as monthly or yearly subscriptions, starting at $49/month](https://www.elementscompiler.com/elements/pricing/?ref=blogs.remobjects.com).