Earlier this year, around the conference in Cologne, we have published a roadmap in which we told you about our plans and what we wanted to deliver in 2016. In this week before Christmas, with winter on our doorsteps it is time to look back and see what we have achieved.

As we all now, predicting the future is very difficult. Who whould have predicted that Donald Trump would be the next president in the US?

So we were wrong in our predictions about the progress of X# too.  But we are on the right track, and we are the only XBase dialect that is making great progress every month.

What we did achieve in the 15 months behind us is:

  • A fully functional core dialect compiler based on the Roslyn source, that can compile everything that you can find in C# 6 with an XBase language syntax.
  • Many new features have been added to the xBase language, such as LINQ, Anonymous types, support for Asynchronous operations, creating generics etc. You only have to look at the pearls section in our forums to see proof of that. Every niche corner in the LINQ area in our product is being tested at length by Phil, and it simply works. Other customers have used other new features and we have received a lot of positive response on the new features
  • The support for the VO and Vulcan specific datatypes and language constructs is also almost finished. Last week we have added some missing features, such as support for PCALL() to call native Win32 functions through a pointer in an external DLL. Not something that you use in your everyday development but it is used in some inhouse libraries as well as in the VO SDK. So we decided that add that to our language, to make the migration from VO and Vulcan as smooth as possible.
    "Normal" VO and Vulcan applications compile fine now with X#.  We have done that ourselves and we got some very positive feedback from our customers who have also successfully migrated apps.
  • We have working Visual Studio integration in both Visual Studio 2015 and Visual Studio 2017. We are very proud that we were one of the original "sim ship partners" (the last one in the alphabetical list)that released their support for Visual Studio 2017 on day one.

We have uploaded a new version of the compiler for our FOX subscribers to the Prerelease area on this website. This version fixes several issues that have been reported by our customers.

New features:

VO and Vulcan compatibility:

  • All init procedures are now properly called at program startup. So not only init procedures in the SDK libraries, but also init procedures in 3rd party libraries and in your own code
  • When both a function (static method) and an instance method with the same name can be found, then the compiler will no longer choose the instance method, but will default to the static method, when called inside a class and no SELF: or SUPER: prefix is used.
  • The sizeof operator now returns a DWORD value
  • Added support for EXIT PROCEDURES (PROCEDURE MyProcedure EXIT). These procedures will automatically be called during program shutdown, just before all the global variables in the assembly are cleared.

All dialects

  • We have added support for preprocessor output (ppo) files
  • The code generation for IIF expressions has been improved
  • The code for ACCESS and ASSIGN methods is no longer stored as a separate method, but inlined in the generated Property Get and Property Set.

Bug fixes

This build contains many bug fixes and fixes many smaller and larger incompatibilities with the VO/Vulcan compiler. See the included readme for more information.

 


We are proud to announce that we have released XSharp Beta 8 to our FOX subscribers,
This version has many new features. The list below shows some of the highlights:

Visual Studio

  • Support for the new Visual Studio 2017
  • We have implemented “Linked Files” in a project. This is useful for example if you have files with common code that you want to include in different projects, like global attributes with company name, product name etc.
  • We have added the ability to “Show all files”.
  • If you add a file with a Form or User Control to your project we will now detect that, and set the subtype of the file. You should see the appropriate icon appear in the project tree
  • Improved Drag and drop in the project explorer
  • The ResX and Settings editor now generate source code. We have also enabled the combo box in these editors that allow you to choose between public and internal classes.

Compiler and Language changes

Some new language features in the Compiler:

  • Object Initializers
  • Collection Initializers
  • When constructing anonymous types, you no longer have to name the fields. If you reference fields or properties from other objects, then the names of these fields/properties will be used for the anonymous type as well

Many improvements in the VO/Vulcan compatibility

  • Default Parameters are now implemented just like in VO and Vulcan.
  • Init Procedures in the main app and the Vulcan SDK Libraries are now called by the main app. We are also initializing the Vulcan macro compiler (calling Init procedure in other libraries will follow shortly)
  • The compiler option Implicit Casts and Conversions (/vo7) has been implemented. You can now also use the @ sign to pass variables by Reference (but we prefer the REF syntax)
  • With these changes you can now successfully compile the standard sdi and mdi examples from VO/Vulcan with X#.