It's time for a quick update about what we have been doing. Here are some things that we have worked on since the last build:

  • We have started work on the FoxPro dialect and have also added a WITH block for all dialects
  • We have also added support for END keywords for entities that do not allow this yet, such as END PROCEDURE, END METHOD, END ACCESS etc. These keywords are optional
  • We made several changes to improve the VS integration, such as better type lookup for functions declared in namespaces, better support for the var keyword, improbed support for Xbase++ dialect etc. X# works fine now with VS 2019, except that our project templates are still poorly visible on the New Project dialect. Microsoft has now promised to change that in one of the upcoming updates.
  • We have made several changes to the runtime. For example dynamic class creation for the Xbase++ dialect (ClassCreate() etc) and for the Xbase++ DataObject class. We have also added the functions that are part of the ASXML Library from Xbase++ (XMLDocOpen() etc). We have also improved several existing functions, such as Round(), ExecName() and others.
  • We have made several changes to the macro compiler, to solve some of the problems that were reported. We have also added support for macro based aliased expressions and ivar access ( (alias)->&varname,   expression:&ivarname etc)
  • And last but not least we have worked on the RDD system. Several small issues were detected and fixed in the Advantage RDD and the work on the DBFCDX driver is approaching the end. We expect to have a fully working DBFCDX rdd any day now.

More news will follow soon.

 


We are very proud that we can announce that we have released X# Bandol RC 1 to our FOX subscribers.
A public build of this product will follow shortly.
This build has completed the VO and Vulcan compatible runtime.

Unfortunately we found some last minute issues in the DBFCDX driver which could corrupt your indexes. We have therefore decided NOT to include the DBFCDX driver. An update for this will follow in a few weeks.
Some of the highlights of this build:

new IS Pattern expressions:

IF <variable> IS <type> VAR <newvariable>

This automatically creates a new variable <newvariable> that is only visible in the scope of the IF expression.

We have also added extended support for the & operator in combination with the Alias (->) operator and made a change to the preprocessor to make it more compatible with Xbase++. You can now use

 (nArea)->&(Expression)

 to read a field from a workarea where the fieldname is in the expression. Of course you can also use

 (nArea)->(FieldGet(FieldPos(Expression)))

 which is almost what gets generated by the compiler.

There are many larger and smaller changes in the runtime to make it more compatible with VO and Vulcan.
There are also some changes in the Visual Studio integration, such as:

  • inheriting windows forms from other forms in the same project
  • fixed a 'hang' when opening projects inside VS 2019
  • some improvements in the auto indenting
  • new templates for VO and XPP class libraries

FOX Subscribers can download this new build here:

{rsfiles path="fox/Compiler/XSharpSetup2RC1Fox.zip"}


In this article we would like to share with you our development roadmap for the coming months.
We are now reaching  the final stage of the development of the runtime for VO & Vulcan and we are looking at new things that you an expect the coming year.
In the coming weeks we will release the first Release Candidate for the XSharp runtime. After that we expect to need a few weeks to finish the final remaining issues.
The schedule show you what we have planned to do after that.

The schedule below of course is an indication and as always: no guarantees.

Component Start Completed
XSharp 2.0 Release
- Runtime
- RDD System
- VO Class libraries
  May 2019
ReportPro 2 & 3 for XSharp 2.0 April 2019 May 2019
Xbase++ runtime functions   July 2019
(Visual) FoxPro dialect, including runtime functions
and support for VFP DBC and VFP datatypes in the DBF format
and a VFP - X# +Visual Studio converter
April 2019 August 2019
VO GUI and SQL Classes with Unicode and AnyCPU support (on top of Windows Forms and Ado.Net) June 2019 August 2019
VFP UI Classes August 2019 October 2019

As you can see in the schedule above: we have not planned to do Xbase++ UI classes yet. We need a business case (someone with a business app that uses the Xbase++ UI classes) or someone that can help us to define what exactly is needed to do this.

If you are missing something in this schedule, or if you want to help to implement / add something, please let us know. We welcome your input.

 


This spring is going to be an exciting period. Not only will we present our product on the X# Summit in Austin, we also expect to finalize the development of the X# Runtime for VO & Vulcan.
On top of that we will finish the implementation of the Xbase++ dialect and we will start with the Visual FoxPro dialect. We are also preparing to promote our product at various FoxPro events around the world.

X# is really becoming a mature product !

To celebrate this we have a special introductionary price for new subscribers to the Friends Of XSharp program. If you follow this link, or if you goto the order page on shareit and enter the coupon code "SPRING2019" you will receive a 25% discount on the normal price of Γé¼ 999.

This spring sale will end on June 21st.

 


Session and Speaker descriptions

Nikos Kokkalis

Nikos 
Nikos Kokkalis studied Computer Engineering at the Democritus University of Thrace, and there also earned his doctorate in 2011. Starting in 1996, he works as an independent software developer. Since 2009 he is employed by Intracom Telecom as an embedded software and algorithm engineer.
During 2011 - 2015 he was a member of the GrafX development team, working on the Vulcan compiler and database engine. Since Sept. 2015 he is a member of the X# development team, working on the compiler and macro compiler.

Multithreading and asynchronous programming with X#

In today's multi-core processors, it is crucial for most applications to be able to take advantage of more than one core by employing multiple threads to provide the best use experience. This is true both for server and desktop applications. This is usually combined - and sometimes confused - with the concept of asynchronous programming. Understanding these concepts and the tools offered by the CLR and X# will be the focus of this session

Into the X# compiler: Roslyn, scripting and the macro compiler

A deep dive into the X# compiler, scripting engine and macro compiler. Find out how it works, what it does best - and what it does not. Learn how to unlock the power of dynamic compilation in your applications. Performance considerations. Security concerns. These are some of the topics that we will study in this session.

Steve Ferrandino

stevef 
Steve Ferrandino began his professional software development career writing code in a 1983 video game arcade in Denton, Texas (Z-80 assembly language for a custom-built video game system). From there he worked with the xBase family of languages using dBase II on a TeleVideo dual 8" floppy disk CPM system (1984). He has progressed through the family from dBase III to X# (where he now spends most of his time) having passed through dbXL/Quicksilver, Clipper, Visual Objects, and Vulcan.NET. Steve's current position is as the Director of Administrative Application Development with Harvard University's, T.H. Chan School of Public Health in Boston, Massachusetts where he has developed a large scale Line of Business application that interfaces with the central University and many external systems. In his free time Steve is a professional saxophonist and works on his 140 year old Victorian house.

Using X# (and C#) to interface to REST services

Representational State Transfer (REST) is a simple way to communicate between two loosely connected systems. This session will cover the history of REST and how it can be used in X# development work. Examples will include Package Tracking Services (UPS, USPS, FedEx, DHL), a two-factor authentication service (DUO), BING maps, Random Word Generation, GeoCoding, Wireless Communications Transfer Protocol (WCTP), Weather services and more.

Rolf van der Hulst

Rolf
 
Rolf is a graduate of University College Twente (Bachelors' Degree) and has interrupted his university career for one year to become part of the RoboTeam Twente, an autonomous robot soccer team. In this team he is treasurer and Software developer. He mostly models mathematical and physical problems within the Robot soccer software.

Lessons from Robot Soccer; how to design and maintain software for an autonomous team of robots playing soccer.

The session will introduce robot soccer from a software perspective, and discuss some of the challenges it poses for (junior) software developers. The session will go into further detail on the architecture of the system and the 'compiler construction' for our robot language, and how we use our system to maintainable code in an easy and fast fashion.   

 

Robert van der Hulst

Robert2 
Robert has been part of the IT industry since the 80's. He started to develop applications in DOS with dBase, Clipper and FoxBase. Later he used Assembler, C++, Visual Objects, Vulcan.Net and C#.
Robert has created several 3rd party components for Visual Objects and Vulcan developers and has been part of the Visual Objects and Vulcan.Net development team from 2003-2010, where he was responsible for the release of VO 2.7 and VO 2.8 and for Vulcan.Net 2 for.Net Framework 4.
In 2015 he started the XSharp (X#) project together with Chris Pyrgas, Nikos Kokkalis and Fabrice Foray. This project has created an open source implementation of the XBase language for .Net. with support for Visual Objects, Vulcan.NET, xBase++, Harbour and (Visual) FoxPro.
In the X# team he has worked on the Compiler, Runtime, RDD system, VS Integration, Documentation and Project Management.
Robert has also helped many customers to move their applications forward from one XBase technology to another

Migrating your Visual Objects applications to X#

The X# development language was created to help you convert your Visual Objects applications with minimal changes to .Net. It is closer to Visual Objects then Vulcan.Net ever was. However some aspects of the Visual Objects programming language are simply not supported by the .Net environment. During this session we will convert several applications from Visual Objects to X# and will have a look at the steps you have to take to make your application run in .Net. We will also have a look at the various compiler options for the X# compiler and how they help to make your application run in .Net.

X# Language improvements compared to Visual Objects and Vulcan.Net.

The first and most important goal of the X# project is to create a development language that can compile your Visual Objects and Vulcan.Net applications. However the X# development team did not stop there and has added several new features to the language. Some of these features came "for free" because the team has used the Roslyn code as the foundation for the compiler. Other features were developed especially for XBase developers.

Understanding and making the most of X# and the X# runtime

The X# runtime functions very much like the VO and Vulcan runtimes, but is designed quite differently. We will have a look at the various components that form the X# runtime and will also have a look at the source code for the runtime. You will learn which components are needed for which dialect and how you can enhance or override the behavior of the X# runtime.

Session schedule