- Created: 15 August 2016
We are pleased to announce that we have released XSharp Beta 6 to our subscribers today.
This build contains many improvements in the VO/Vulcan compatibility area. A selection from these changes:
- Added support for compile time codeblocks
- Added support for all kinds of Aliased Expressions (useful with RDD based data access)
- Added support for VO Compatible string comparisons
- Indexed properties can now be used by name (String:Chars for example)
- Indexed properties can now be defined with overloads with different parameter types (int and string for example)
VO and Vulcan support is nearing completion!
Some new features in this build
- Added a new syntax to define EVENTS (with ADD and REMOVE keywords)
- Completed the support for the .Designer.prg for windows forms inside visual studio
- X# now properly works side by side with the Vulcan project system inside Visual Studio. We no longer "steal" the language service from Vulcan projects
- Performance improvements in the source code editor for large files
This new build is available for download for FOX subscribers on the FOX download page on this website.
- Created: 21 July 2016
Last week I was on a holiday with my family in Normandy in France.
Some of the touristic highlights that we visited were of course the D-Day beaches Omaha, Utah, Juno, Gold and Sword where the allied forces started the liberation of the Northern part of Europ on June 6, 1944.
Near those beaches we also visited the war cemetaries where thousands of solders from the US, Britain, Canada and other countries were buried. This was very impressive as you can imagine.
The thought about these (mostly) young men that have given their lives to help liberate Europe, makes you feel very grateful and sad at the same time. You know that each person has left behind parents, or wife and children who have had to miss their loved sons or husbands and fathers.
At the same time the number of casualties was of course much smaller than the number of people that were killed by the occupiers. Compared to these numbers, the number of deceased allied soldiers was relatively low.
This reminded me of the famous quote from Spock in Vulcan "The needs of the wany outweigh the needs of the few, or the one".
I am sure that these soldiers and their families did not have something like that in mind, but I am glad that the allied leaders have chosen to liberate Europe, even when they could know that this would mean serious losses of allied lives.
And this quote from Spock also nicely describes why many people, including we, have chosen to publish their software under an Open Source license: The needs of the many people working with the product outweigh the needs of the few people developing it or owning it.
People should not be dependent on the quirks of an individual software vendor and should be able to work with a product or continue to improve a product after the original manufactorer has retired the product.
Finally, something completely different
Next week we will be attending the Microsoft Visual Studio Partner Summit in Redmond. We have been given the opportunity to demonstrate our product to other Visual Studio Partners and to Microsoft Staff. We hope to raise some interest there and to speak with people from the FoxPro community inside Microsoft. Maybe we can even get some help to get started on the FoxPro dialect?
We will also speak with some Microsoft Visual Studio specialists to help solve a few "challenges" that we have with our Visual Studio Integration.
In the mean time we have also worked on some of the remaining issues to support the Bring Your Own Runtime concept.
You can expect a new release in the first week of August.
- Created: 02 July 2016
We are reaching the end of the process to implement the BYOR (Bring Your Own Runtime) support and we are working on some of the more obscure things inside the compiler: implicit and explicit conversions and the related compiler options, such as /vo4 and /vo7.
If you would ask any normal person which number is bigger: -1 or any arbitrary positive number, then most people will say that -1 is smaller. Now ask the same thing to a computer and you may receive diferent and unexpected answers. Consider the following example program:
FUNCTION Start AS VOID
LOCAL dwValue AS DWORD
LOCAL liValue AS LONG
liValue := -1
dwValue := 1
? liValue < dwValue
Compile this code in Vulcan and it will compile without warnings, but the result will be that liValue (-1) is NOT smaller than dwValue (1).
Compile the same code in X# and you will get a compiler warning that you are comparing signed and unsigned integers. But the result is correct liValue is < dwValue.
Compile the same code (you wil have to remove the AS VOID from the start function) in VO and you will get a compiler warning 51422 (overflow or loss of data), which many people have disabled.If you ignore the error then the result will be that liValue(1) is NOT smaller than dwValue(1).
If you enable overflow errors in Vulcan (/ovf+) you will see what happened: the comparison will throw an overflow exception. The LONG Value gets converted from -1 to a DWORD with the value 0xFFFFFFFF and this produces an overflow. But without overflow checking this will then lead to a comparison where 0xFFFFFFFF is compared with 1. VO does the same.
After our implementation of the /vo4 compiler option in X# the compier warning will disappear, but the result of the comparison will be different from VO and Vulcan, because Roslyn will detect the possible overflow problem and will convert the comparison to a 64 bit comparison.
Now the 1 million dollar question of course is what we should do:
- create a compatible but incorrect result or
- create a correct but incompatible result.
Please let us know what you think of this...
- Created: 21 June 2016
We are proud to inform you that we have released XSharp Beta 5 today to our FOX subscribers.
It has taken a little longer than expected / hoped, but it is full of new features that make the product very compatible with VO and Vulcan.
Next to the obvious bug fixes there are lots of new features in this build, most of which are for the VO/Vulcan dialect only
- Full support for the ARRAY type, including array access, nested arrays, the /AZ compiler option etc.
- Full support for Late Binding
- Support for missing arguments and array elements in literal arrays
- Full support for VO & Vulcan compatible constructor chaining (where the call to the parent constructor is not the first statement in the constructor body)
- Support for the Macro operator and Alias (->) operator.
- Support for the FIELD statement
- We are now addorning our assemblies with the attributes that the Vulcan runtime and Vulcan macro compiler expect, so your functions will be callable from the macro compiler, and your classes can be instantiated with CreateInstance()
- "Usings" for Vulcan are now automatically included by the compiler
- Added several preprocessor macros, such as __DIALECT__ which returns the current selected dialect
- Several implicit conversions have been added for VO compatible types
- Support for the implicit function _Chr() has been added
Our VS integration and Build system also have a lot of new features
- Improved the CodeDom compiler and CodeDom parser which are used by the Winform and WPF editors
- Several new WPF and Resource templates have been included
- Support for native resources and the resource compiler
Subscribers can download the new build from the download page on this website.
- Created: 29 May 2016
It has been a few weeks, so it is time again for a progress report.
We have worked on the legal side of distributing free software. In the top menu from this website you can now find an option that describes under which licenses we distribute our software. We have decided to use a couple of different licenses.
- A license that describes how you can use the compiled version of X# and which components you can include with your product. This is the XSharp Open Software License Agreement.
- A second license, the Apache Open License, that describes what you can do with the source code to our runtime and tools
- A third license, The XSharp Compiler Source Code License, that describes what our FOX subscribers can do with the source code for our compiler.
Please look at the separate page on this website for more details.
The XSharp source code is available on Github. Please read this FAQ article on where you can find it and how you can contribute.
In the last few weeks we have worked very hard on the completion of the Vulcan Runtime compatibility (Bring Your Own Runtime support). At this moment we have added support for the Clipper calling convention, for late binding, for the macro operator (&), for the ALIAS (->) operator and more. Almost everything you need is now in place to compile your Visual Objects applications with XSharp against the Vulcan runtime.
We have also added a new switch (/vo15): the default behavior for VO and Vulcan is that untyped variables will be automatically compiled as USUAL without warning. Many developers have asked us to for a switch to disable this behavior. We have decided to make the default behavior for the VO and Vulcan dialect the same as VO and Vulcan, but we have added this compiler switch that will allow you tell the compiler to complain about missing types.
There are some small issues left, especially some of the special compiler options that Vulcan has to allow "dirty" VO code to compile in .Net, such as mixing typed and untyped integers, mixing different pointer types and support for the VO STRUCT and UNION. We expect to finish these in a few weeks.
Some people have asked us for a clear overview of the differences between the dialects. We have added a FAQ page for this.
We are completing the support for the .Designer.prg and have fixed some issues regarding the support for the WPF editor. We are also working on some other changes that should add better copy/paste behavior to the VS IDE as well as support for linked files.
We are finally preparing to include the IDE components from XIDE (from Chris Pyrgas) to our VS IDE support, so you can edit VO compatible server entities, forms and menus.
We have added support for the new /vo15 compiler switch as well as support for compiling native resource files (which are used by the VO compatible GUI classes).
XSharp Beta 5 which includes all of this should be available in the coming week.
- Created: 08 May 2016
We are proud that XSharp Beta 4 is available for download for our FOX subscribers.
On top of the changes that we already listed in a news message last week, we have now also added support for some additional VO and Vulcan compatibility topics:
- BEGIN SEQUENCE... RECOVER USING ... END
- We have also added support for the /VO10 compiler option (Compatible IIF expressions, where the TRUE and FALSE expressions are of a different type).
- And finally we restored the behavior that the call to the parent constructor no longer has to be the first line inside a constructor (for VO and Vulcan dialect only). That way you will be able to create Clipper calling convention constructors and set default values for missing parameters before calling the Super constructor. Or call a PreInit() method before the super constructor.
As said: this build is for download for FOX subscribers only.
The next public beta is planned for the second half of June 2016, and should contain the full VO and Vulcan compatibility support as well as some enhancements inside Visual Studio and our first XSharp Runtime.
We would finally like to remind you that the introductionary price for the FOX program ends this month.
Stay tuned for more news!
- Created: 30 April 2016
The conference in Cologne is now more than a week behind us and we have all gone back to the usual work.
In the last week many people, that did not attend the conference, have approached us to hear the details about our future plans.
That is why we have decided to upload PDF versions of Robert's presentations to the website.
Goto the Downloads / General section to find them
We have also picked up the work for the Spring build that contains the full Bring Your Own Runtime support. We have now implemented:
- Clipper calling convention
- /vo5 compiler option (to set Clipper calling convention for parameter-less methods)
- Support for the implicit functions PCOUNT, _GETMPARAM and _GETFPARAM
- Support for String2Psz() and Cast2Psz()
At the same time we have also added a couple of new features to the language (sorry we could not resist it..)
- Lambda expressions with multiple expressions
- Lambda expressions with multiple statements
- The nameof operator
- Anonymous classes (useful when doing Linq)
- Using block now (optionally) contains a variable declaration
And also some changes in our Visual Studio integration
- Support for designer.prg
- Fixed some problems with opening the source from the error list
- Visual Studio was always treating "warnings as errors" regardless of the setting in the project properties. This has been fixed.
Please give us a week or so to wrap this up, create some examples and to release Beta 4 (for FOX subscribers only).
- Created: 23 April 2016
We have just returned from a very succesful conference in Cologne, called XBase.Future.
The conference was very well organized and we would like to thank the organization again for all their work. Maike, Michael, Meinhard and the other team members from Fischer and Consults, you have done a great job!
We can tell you many stories about the conference. But for us the change in atmosphere compared to last years conference was the most important thing. Last year many people were not happy with the lack of progress in Vulcan.NET and were seriously considering alternatives outside of the XBase world for their future development.
Our new XBase language has changed all of this. In the closing session one of the attendees perfectly said: "X# has brought us new hope".