Show/Hide Toolbars

XSharp

Navigation: X# Documentation

The X# Runtime

Scroll Prev Top Next More

In X# version 2 - Bandol we have introduced the X# runtime.

 

In this chapter we would like to give you an overview of the design decisions that we made, what the runtime looks like, where you can find which types and functions etc.

We will also list here the features that are not supported yet.

Introduction

 

When we designed the X# compile and X# Runtime we had a few focus points in mind:

The language and runtime should be VO compatible whenever possible. We know that the Vulcan devteam made some decisions not to support certain features from VO, but we decided that we would like to be as compatible as technically possible.

We want our runtime to be fully Unicode and AnyCPU. It should run on any platform and also both in x86 and x64 mode.  That has caused some challenges because VO is Ansi (and not Unicode) and also X86. In VO you can cast a LONG to a PTR. That will not work in X64 mode because a LONG is 32 bits and a PTR 64 bits

We want the code to compile in "Safe" mode. No unsafe code when not strictly needed. The biggest problem / challenge here is the PTR type. With a PTR you can access memory directly and read/write from memory, even if you don't "own" that memory. However the same PTR type is also used as "unique identifier" for example in the low level file i/o and in the GUI classes for Window and Control handles. These PTR values are never used to read/write memory but are like object references. We have decided to use the .Net IntPtr type for this kind of handles. Of course the compiler can transparently convert between PTR and IntPtr.

We want to prove that the X# language is a first class .Net development language. That is why we decided to write the X# runtime in X#. By doing that we also create a large codebase to test the compiler. So that is a win - win situation.

We want the runtime to be thread safe. Each thread has its own "global" state and its own list of open workareas. When a new thread is started it will inherit the state of the main thread but will not inherit the workareas from the main thread

At this moment the X# Runtime is compiled against .Net Framework 4.6.

Assemblies in the X# Runtime

 

If you want to know in which Assembly a function or type is defined then your "best friend" is the documentation. We are using a tool to generate the documentation, so this is always correct.
Some subsystems have functions XSharp.Core DLL and in XSharp.VO.DLL as well.

 

Component

Description

Dialect used

Framework Version

XSharp.Core.DLL

This is the base DLL of the X# Runtime.

X# Core

4.6

XSharp.Data.DLL

This DLL contains support code for .Net SQL based data access and for SQL based cursors

X# Core

4.6

XSharp.RT.DLL

This DLL is required for all dialects apart from Core

X# non - core

4.6

XSharp.RT.Debugger.DLL

This DLL contains the functions and windows for the Runtime Debugger

X# core

4.6

XSharp.VO.DLL

This DLL adds features to the runtime that are needed for the VO and Vulcan  dialects.

X# VO and X# Vulcan

4.6

XSharp.XPP.DLL

This DLL adds features to the runtime that are needed for the Xbase++ dialect.

X# XPP

4.6

XSharp.VFP.DLL

This DLL adds features to the runtime that are needed for the FoxPro dialect.

X# FoxPro

4.6

XSharp.Macrocompiler.DLL

This DLL is the X# "fast" macro compiler.

X# Core

4.6

XSharp.MacroCompiler.Full.DLL

This DLL is the X# "full" macro compiler.

X# Core

4.6

XSharp.RDD.DLL

This DLL contains the various RDDs implemented for X#.

X# Core

4.6

VO SDK Class libs:
VOConsoleClasses.dll

VOGUIClasses.dll

VOInternetClasses.dll

VORDDClasses.dll

VOReportClasses.dll

VOSQLClasses.dll

VOSystemClasses.dll

VOWin32APILibrary.dll

These DLLs represent the class libraries from Visual Objects

X# VO and X# Vulcan

4.6

Missing or incomplete Features

 

Feature

Description

Expected when

Some runtime functions are not supported yet:
Crypt functions (Crypt(), CryptA())
Encoding functions (B64Enc.., UUEnc.., GetChunkBase64 etc)
 

These functions will most likely be added in one of the next betas. For now they will throw a notimplementedexception when you use them