One year later: XSharp Public Beta 7

Last year in the last week of September we have announced XSharp at the DevShare conference in the United Kingdom.
One year later XSharp is no longer a promise but a full blown product!

We are pleased to announce that we have released XSharp Beta 7 both to our FOX subscribers and to the general public today.
XSharp Beta 7 is a major step forward, especially compared to Public Beta 1 from February 2016.
Many new features have been added to the product, and major steps have been made to make X# compatible with Visual Objects and Vulcan.NET.

This version has almost all of the features that are needed to compile Vulcan.NET applications.
We still call this version a Beta version because it misses a very small number of features to compile your Vulcan applications, but the quality of the product is not Beta software at all but Release quality.

Now is a great time to look at XSharp and to test your VO and Vulcan code with XSharp.


Some of the changes since Public Beta 1:

  • The compiler recognizes the complete VO syntax, so also Codeblocks, Field statements, Workarea alias etc.
  • The compiler can consume the USUAL type, ARRAY, DATE etc from a Vulcan runtime assembly (in what we call Bring Your Own Runtime mode).
    Please note that to use this you need to have a license to distribute the Vulcan.NET runtime. We have tested our code with both Vulcan.NET 3 and Vulcan.NET 4 runtimes.
  • We have added support for "Clipper Calling Convention"
  • The compiler can produce late bound code (methods and properties can be called on variables of type USUAL and OBJECT)
  • We have implemented most of the /VO compatibilty compiler options that Vulcan has
  • We have added support for String2Psz() and Cast2Psz() and some other intrinsic functions such as SLen(), AltD(), PCOUNT() and _GETMPARAM()
  • We have added several preprocessor macros, such __ENTITY__, __DIALECT__, __VERSION__ etc
  • We have added support for the &() macro operator
  • We have added support for BEGIN SEQUENCE .. END
  • We have added a new /vo15 compiler option. With this option you can disable the (VO and Vulcan) behavior that declarations without type will automatically become 'AS USUAL'
  • All the code compiled by the X# compiler in the Vulcan Dialect will be recognized as "True Vulcan code" by the Vulcan compiler, so you can mix the two if you want or have to.

Some new features (also in the Core dialect)

  • Support for the DYNAMIC type
  • Support for BEGIN USING .. END USING (similar to the using statement in C#)
  • Support for "interpolated strings"
  • Support for Lambda expressions with multiple expressions or even statements and statement lists
  • a new syntax for 'complex events'
  • Support for the NameOf() intrinsic function
  • Support for BEGIN FIXED .. END FIXED (similar to the fixed statement in C#)

Also many changes were made in the Visual Studio integration such as:

  • Support for the Windows Forms Editor (including separate .designer.prg)
  • Support for the WPF Editor
  • Several project and item templates have been added
  • Support for the Native Resource Compiler
  • Better support for Side by Side installation with Vulcan.NET

The installer for FOX subscribers will come with both a Debug and Release version of the compiler. The Release version compiles many times faster than the debug version and also many times faster than the Vulcan.NET compiler!The public beta contains the Debug version only.

Future Builds

We expect to release a new build in the coming 6 weeks, which will include the latest missing pieces for the BYOR support and some improvements to the Visual Studio Integration.
With that build you should be able to compile ALL (correct) Vulcan code, including 3rd party libraries such as Classmate, ReportPro, RightSLE, Vn2Ado etc.

After that we will start working on our own Runtime, including replacements for the RDD system, Macro compiler and runtime functions.

You can download XSharp Beta 7 from the downloads area on our website.


The Public version of X# can be downloaded for free, but this is also a perfect moment to subscribe to the Friend Of XSharp (FOX) program.
You will help to support the XSharp development and will help to move your Visual Objects and Vulcan application forward in the DotNet world.Licenses are € 999 per year and include frequent updates and support through closed newsgroups and forums by the X# Development team.

We will also give you support for Visual Objects and Vulcan.NET. After all: we know these products inside out, so who can better support you and provide you with workarounds or solutions for problems with these programs?


  • Here are some serious numbers about the quality of X# beta 7, core dialect.

    As you all know, I do intense Unit testing. It's not 100% but:

    For my standard application I have 1692 unit tests. Some of them, like the function tests, contain more then one assertions, but do test only a few lines of code. These are the tests for the basic functions.
    Some of the tests check about 10 thousand lines of code at once. So I can say in fact I have more than 2000 tests running fine.
    NCover reports:

    Branch coverage 25.5 % 11177 of 43760
    Sequence point c. 55.7% 58733 of 105412
    Condition coverage 17.1 7214 of 42089

    After doing a full production job, NCover reports:

    Branch coverage 29.3 % 12810 of 43760
    Sequence point c. 47.9% 50513 of 105412
    Condition coverage 24.4% 10251 of 42089

    I used almost all features that were available in Vulcan, like SEALED, INTERNAL, ABSTRACT, INTERFACE etc..

    (Number of allowed character reached, to be continued)
  • From the new features I use SWITCH whereever I can.
    UNTIL now I do not use ASYNC/AWAIT, LINQ and most of the new features.

    These tests and the application ran perfectly since the December, 31 2015 alpha version. This version was almost bug free. The first beta is as I can see:
    Since then they did not introduce new bugs! That was amazing too see.

    In addition I tested the DBF access from X# through the BYOR approach. It runs too!

    For me, the core dialect together with XIDE has absolutly release quality. My application is running the field since January as a full functional 64bit app.

    Congrats to the team.

  • Unfortunately I cannot find the setup file for the public beta 7.0 in the download section (I can only see 1.0 there).
    Due to the intense daily business we cannot think of migrating to X# in this year but it will be a topic next year for certain; nevertheless I would like to do some tests in advance.
  • Bernhard,
    There was a visibility problem (file was only visible to registered users). That has been fixed.
    You still need to register to download files.