We have uploaded a new compiler for our FOX subscribers to the prerelease area on this website. This interim build fixes a couple of issues found by our subscribers in beta 10.

The most important change is the way how single quoted literals are handled:

In earlier builds a single quoted literal of 1 character was always treated as a character constant. Beta 10 would treat the single quoted literal always as a string constant and then try to detect the place where it was used and convert it to a character constant when needed. Unfortunately this was not working the way it should

So the original behaviour from before Beta 10 has been restored.
Some suggestions have been made on how to change this behaviour for a future build, and we are looking into this.

Other changes:

  • Fixed several small problems with UDCs
  • Added /s (Syntax check only) commandline option. This will parse the code and detect syntax errors but will not produce any EXE or DLL output.
  • Improved error messages for code where closing tokens (such as closing string delimiters and closing parentheses) are missing
  • _sizeof and Sizeof will no longer generate a compiler warning about 'Unsafe code' when building for the VO and Vulcan dialect  and an explicit platform  x86 or x64 is selected.
  • Added rules for comparing LOGIC operands. The idea is FALSE < TRUE. The resulting code will compare 0 for False with 1 for True.
  • Added "ANY" as alias for "USUAL" to the VO dialect, just like in VO.
  • The error numbers for the preprocessor commands #warning and #error have changed to become compatible with Roslyn. They are now XS1030 for #warning and XS1029 for #error. The error numbers XS9005 and XS9006 are unused for now but will be reused in the future
  • Fix a compiler crash for a Start function without return type

 

We are pleased to announce that XSharp Beta 10 has been released to our FOX subscribers today.
This beta contains many new features and works together with Visual Studio 2015 and Visual Studio 2017.

Some of the highlights of this build:

  • Support for User Defined Commands in the preprocessor, including Function style Defines
  • Many improvements in the Visual Studio integration.
  • A new 'ASTYPE' keyword, which works just like the 'as' keyword in C#. So it combines a type check and an assignment in one statement
  • Full support for VO style DEFINEs The type specication is now completely optional.
  • Some bug fixes
  • Performance improvements for compiling assemblies with large numbers of defines and/or (_DLL) functions

For a complete list of changes look at the version history in the documentation on this website.

Our next build is scheduled around end of April, short before the XBase.Future converence in Cologne.

 

VS 2017

Tomorrow, March 7 is the 20th anniversary of Visual Studio and the launch of Visual Studio 2017.
X# is ready for the event and one of the launch partners. You can watch the launch event online at this link.
To celebrate the 20th anniversary we have decided to extend the 30% discount on our Friends Of XSharp (FOX) subscription for another 3 months. Click here to subscribe to our FOX program with 30% discount.
If you are interested in offers from other launch partners, look here.

xBase.Future 2017

We are approaching the dead line for the “Early Bird” price for the xBase.Future conference in Cologne on April 25-27. Register now and qualify for the discount

Beta 10

We expect to release X# Beta 10 by the end of this week. This new build has some exciting new features, especially in the area of the Visual Studio integration (2015 & 2017). We have added support for Class and Member dropdowns, Collapsible blocks in the editor (for #regions, types, members, block statements etc), code completion, intellisense errors in the error list and editor and info tips. It is not perfect yet, but we will continue to work on this in the coming months.
In the image below you see some of these new features in action.

intellisense

We have also added UDC support to the preprocessor, so almost all your “old” Clipper and Visual Objects UDCs will work with X#. You can even use the old @ SAY .. GET commands in your code, if you want, as long as you map these to meaningful function calls.
In fact we are working with a customer to migrate a Clipper/Harbour application that is full of these commands to X# !
And the good thing is: the X# Visual Studio Language integration is "smart" enough to recognize your UDC keywords and color them as if they are built-in keywords.

More than a year ago, we have published our first development Roadmap for the X# project. This new roadmap continues the tradition and describes what our plans for 2017 are.

Click here for a PDF with this document which also looks back at what we have achieved in 2016

Our plans for 2017

You will not be surprised that the open items from our roadmap for 2016  are still on the to do list for 2017. Some of the things on our to list:

  • Improved Visual Studio support:
    • Nuget support
    • Editors for the VO Binaries
    • Support for other VS subsystems, especially those that are based on T4 templates.
    • “Intellisense” features for the editor, such as completion lists, parameter tips, Goto definition etc
    • Class browser and Object browser support
    • Debugger support for Globals and X# expressions

  • Create the X# runtime, so you no longer need the Vulcan Runtime to run your apps that use RDDs and the VO SDK classes. Our intention is not only to replace the Vulcan runtime, but also to improve it.
    After all, we have done this before, so we can do it again, but then better!
    • Thread Safe runtime and RDD system
    • Runs on AnyCPU
    • Support Runtime Macros AND scripting (our macro compiler will support the complete language!)
    • Portable where possible. Unfortunately, there are many areas (IO related mostly) that can’t be completely portable

  • Add support for an extra xBase language. At this moment, we are considering to add support for (x)Harbour. The (x)Harbour community is very active and seems to be the most interesting target audience.

When
Name
Contents / Motto

April 2017

Spring 2017

Most “intellisense” features in VS
X# Scripting/Macro support
First version of the Runtime

July 2017

Summer 2017

Complete X# Runtime

October 2017

Autumn 2017

First version of (x)Harbour support

Christmas 2017

Winter 2017

Complete version of (x)Harbour support

More and more people are using X# and are deploying their applications written in X#.

We have received some examples from our customers and have added a "gallery" of these example applications to this website. Click on the Examples menu option above to see a list of examples.

We'd love to hear from you as well and share your success story with the rest of the world. Please send us images and a short description of your application.

A great opportunity to look at successful applications is also the "Application Show" at the XBase.Future conference in April.

We'd love to see you there. Please register now !

We are proud to announce the release of XSharp Beta 9.
This beta mainly focuses on bug fixes and compatibility With this build we consider the VO and Vulcan support completed: the complete Vulcan SDK compiles as well as 99.9% of the 3rd party products, such as ClassMate, ReportPro, bBrowser and Vn2Ado. You should have no problems compiling your Vulcan code with this build of X#.

Many changes to the compiler have been released before as Beta 8a and Beta 8b. We have made some more changes since beta 8b mostly as a result of your feedback, for which we are very grateful.

This build also includes updated Visual Studio integration. Unfortunately not with Code completion and other editor features, but we did make quite some changes to the build system and project system. Not all of these are directly visible, but we fixed some glitches, especially with regard to dependent items, resource compilation, the error list etc. We have now also enabled all the VO compatibility compiler options in the project properties dialog.
And if you are wondering "where is my intellisense": we have decided to delay the Code completion support until the next build because we were not completely satisfied with it.

You will also find quite some changes in the documentation. All of the compiler options are documentation now, and we have included a list of the most common error numbers and messages.

Today we are uploading both a build for our Friends Of XSharp (FOX) subscribers and a public build. This public build is identical to the FOX build but does not include the optimized version of the compiler.

Last but not least: our special 30% discount on the price of a FOX subscription was expiring this week. We have decided to extend this price until February 15th. Click here to subscribe now

 

It is time to let you know what we have done since beta 9.Below is a list of the things that are ready and will be included in beta 10.
We have also published the contents of our help file on the website.

Compiler

  • We have completed support for the DEFINE keyword. The type clause is now optional. The compiler will figure out the type of the define when no type is specified.
    The DEFINEs will be compiled to a Constant field of the Functions class, or a Readonly Static field, when the expression cannot be easily determined at compile time.
  • We have extended the preprocessor . It now has support for #command, #translatem #xcommand and #xtranslate
  • Added ASTYPE expression, similar to the AS construct in other languages. This will assign a value of the correct type or NULL when the expression is not of the correct type:
        
            VAR someVariable := <AnExpression> ASTYPE <SomeType>

Visual Studio

  • Tested and works with Visual Studio 2017 RC 4
  • We have added supports for snippets and included several code snippets in the installer
  • Added support for ARM and Itanium platform types
  • The parser that is used in the Windows Forms editor now also properly handles background images in resource files. Both images in the resx for the form and also background images in the shared project resources
  • We have added Nuget support for our project system.
  • Added a project property to control how Managed file resources are included:  Use Vulcan Compatible Managed Resources
  • Fixes several problems with dependent items
  • Added implementation of the OAProject.Imports property, which is used by JetBrains

XPorter

  • Fixed a problem converting WPF style projects

We are proud to announce that a new prerelease version of the X# compiler is available for download for our FOX subscribers.
You can find the ZIP file with the new compiler in the prerelease downloads folder on this website.

With this build you can compile the Vulcan SDK without changes, except for some obvious errors in the Vulcan SDK that Vulcan did not find! One of our team members will write a blog article about these errors, since you may have similar problems in your code.

We consider the Vulcan Compatibility of the compiler nearly finished with the current state of the compiler. All Vulcan code should compile without problems now. Of course the real test is with compiling and running YOUR source code.

Please try this version of the compiler with as much of your code as possible and let us know which compile time and which runtime problems you find.

The next builds of the compiler will focus on bug fixing and adding some VO compatibility options such as UDCs, VO compatible DEFINES, VO compatible numeric conversions etc.

The next full build of the product (Beta 9) will contain this new compiler and improved Visual Studio support and is expected a few weeks from now.

For those interested, here is a summary of the changes in the compiler since Beta 8:

  • Added support for PCall and PCallNative
  • Full support for INIT procedures. We also added EXIT procedures.
  • Added compatibility command line options /ppo, .showincludes, /vo1, /vo6
  • Changed several method resolution strategies. Calls without object/self prefix will resolve to functions first and when no function is found then it will look for instance methods
  • Added support for DEFAULT TO, ACCEPT, WAIT and QUIT commands
  • Allow multiple indexed properties per type and allow to use the indexer name, such as the string:Chars collection
  • Code generation has been optimized for several language constructs
  • Debugger step information has been improved for a better debug "experience".

The full list of changes is included in the ZIP but also available as download in the General section on this website.

If you are not a FOX subscriber and want to test this new compiler with your code: sign up now.
Click here to subscribe to the the FOX program immediately and to qualify for the 30% discount.