- Created: 13 January 2017
As we announced a couple weeks ago, we have recently (to be precise, that was in Athens, at 20:56 of December 29th, 2016 achieved a major milestone for X#: Now the compiler can successfully compile all *valid* existing Vulcan code, or at least all existing code that we have tested the compiler with. And thanks to many of you who have provided us literally many 100s of thousands of lines of your code for our testing, we have tested the compiler against A LOT of existing code!
Of course we have tested the compiler also with our own code, like the source code for XIDE for example, which was previously written in Vulcan and even tested it with existing VO code that has not been ported to Vulcan at all. In the process, the stricter and more powerful X# compiler has revealed several problems in existing code (in the VO SDK, in the Vulcan version of the SDK, in ours and in other developers’ code), some of which should have never been allowed to compile before at all.
We have collected a of such problems, and we want to present them to you so you can learn from it
Assignment made to the same variable
This is by far the most common issue in existing code revealed by the X# compiler. Here is a simple case:
FUNCTION Absolute(nValue AS INT) AS INT
LOCAL nRetValue AS INT
IF nValue > 0
nValue := nValue // typo, should be nRetValue := nValue
nRetValue := - nValue
VO and Vulcan do not report an error or warning on this, while X# does report a warning: warning XS1717: Assignment made to same variable; did you mean to assign something else?
- Created: 11 January 2017
This is a question, a lot of you are asking when they start the current version of Visual Studio Integration of XSharp; and I think you must have some explanations about it.
First, Intellisense is maybe not the right term to use, because it does cover a lot of features: So, you will have to make the distinction between Autocompletion, Parameters tooltips, Goto entity, Peek definition, Code snippets, …
And unfortunately, all that doesn’t comes automatically in VS : we have to provide the services.
Most of that was done by a LanguageService in VisualStudio, prior the 2015 version; but since then, when you look at the MSDN documentation, it is now related as legacy. Most of all, the vNext generation of Visual Studio is also introducing a new way of managing the project system, and in order to keep in touch with right technology, we must now implement these features as MEF.
MEF, the Managed Extensibility Framework, is feature introduced with .NET 4.0 that allows you to Import or Export classes as a provider, and have these automatically used by the consumer: Here, Visual Studio.
Ok, very interesting but Where is my Intellisense ?
Not too far, in fact : In order to provide Autocompletion, we must know what you are typing, in which context. So we need load references of your project and (using reflection) extract all information (Class/Method/Property/Parameters/…), then walk all your source code, and build a database of Elements using the XSharp compiler.
By the way, one element is how the Database is built : C++ is using an external database using SQLite, C# is using an In-Memory model, so we have to deal with speed and memory usage : We currently have made the choice to also have an In-Memory model, but may reconsider that if some users are running low on memory with big projects.
Creating and managing that was a bit long, but we now have a strong model and the first step will be soon available.
- Created: 08 January 2017
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.
- Created: 06 January 2017
On behalf of the whole devteam I would like to wish all our friends, customers and other people following our project all the best for 2017!
And I would also like to use the opportunity to share some news with you:
Last week we had our 2nd 'DevTeam Summit' in Athens. It was a little bit different this year compared with last year. First Fabrice could not attend because of health issues for a relative. And secondly it was cold, very cold. We had snow in Athens !
We worked a lot this week but also had some time for touristic attractions, as you can see in the image here.
One of the things we acomplished is that we finished the work on the Vulcan compatibility in the compiler. We were able to successfully compiler the complete Vulcan SDK including all kind of dirty tricks that are used in this SDK without code changes.
To be honest: we had to make a couple of changes, because our compiler found a few problems in the Vulcan SDK. If you ever wondered why drag and drop in the GUI classes is not working properly in Vulcan, then we have found the reason: there is code missing because of a typo in a define in the source code.
We also discussed our future plans for X# and you can expect updates on this website in the next couple of weeks.
As you can expect we will now pickup the work on the X# runtime, which will consist of a set of runtime functions, xBase datatypes RDDs, Macro compiler and more.
We expect to be able show you a lot of this at the XBase Future conference in Cologne end of April.
Will we see you there ?
- Created: 18 December 2016
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.
- Created: 06 December 2016
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.
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.
- 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.
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.
- Created: 20 November 2016
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:
- 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#.
- Created: 16 November 2016
Today at Connect 2016 Microsoft Launched the new version of Visual Studio called Visual Studio 2017
There are many new features in this product. The first and also first visible difference is that the installation process has dramatically changed. You no longer have to download and install many giga bytes of information to run Visual Studio. In stead you now can select a workload and only the elements needed for this particular work will be installed.
Typical workloads are .Net desktop development, Universal Windows Platform development and many more.
Installation will run much smoother after that and the whole footprint of Visual Studio will be much smaller.
We at XSharp are ready for this new version, as we already have indicated in earlier news posts.
We are proud that we are one of the so-called "Sim Ship partners" for Visual Studio 2017, 3rd party vendors whose product is ready for VS 2017 from day 1.
We have created a new installer for our FOX subscribers which will integrate the X# product in Visual Studio 2015 and/or Visual Studio 2017. A public installer is expected around Christmas time.
The new installer will be available for download later this week. Please give us some time to test the latest Visual Studio build, to be sure nothing serious has changed.
To celebrate the release of Visual Studio 2017 we have a special introductionary price for new FOX subscribers: new FOX subscribers will get a 30% discount when they use the Coupon Code VS2017 during the order process.
Click here to subscribe to the the FOX program immediately and to qualify for the 30% discount.
This discount will be available until January 31st 2017.