Show/Hide Toolbars

XSharp

Navigation: X# 文档

X# 运行时(Runtime)

Scroll Prev Top Next More

在 X# 版本 2 - Bandol 中,我们引入了 X# 运行时。

 

在本章中,我们将向您概述我们所做的设计决定、运行时的外观、在哪里可以找到哪些类型和函数等。

我们还将在此列出尚未支持的功能。

概述

在设计 X# 编译和 X# 运行时时,我们重点考虑了几个问题:

 

语言和运行时应尽可能与 VO 兼容。我们知道 Vulcan 开发团队决定不支持 VO 的某些功能,但我们决定在技术上尽可能做到兼容。

我们希望我们的运行时是完全 Unicode 和 AnyCPU 的。它应该可以在任何平台上运行,也可以在 x86 和 x64 模式下运行。 这带来了一些挑战,因为 VO 是 Ansi(而不是 Unicode),也是 X86。在 VO 中,您可以将一个 LONG 改为一个 PTR。这在 X64 模式下是行不通的,因为 LONG 是 32 位,而 PTR 是 64 位。

我们希望代码在 "安全" 模式下编译。在非严格需要的情况下,不要使用不安全的代码。这里最大的问题/挑战是 PTR 类型。有了 PTR,即使你不 "拥有" 内存,你也可以直接访问内存和读/写内存。然而,同样的 PTR 类型也被用作 "唯一标识符",例如在低级文件 i/o 和图形用户界面类中的窗口和控制句柄。这些 PTR 值从不用于读/写内存,而是类似于对象引用。我们决定使用 .Net IntPtr 类型来处理这类句柄。当然,编译器可以在 PTR 和 IntPtr 之间进行透明转换。

我们希望证明 X# 语言是一流的 .Net 开发语言。这就是我们决定用 X# 编写 X# 运行时的原因。通过这样做,我们还创建了一个大型代码库来测试编译器。因此,这是一个双赢的局面。

我们希望运行时是线程安全的。每个线程都有自己的 "全局" 状态和开放工作区列表。当一个新线程启动时,它将继承主线程的状态,但不会继承主线程的工作区。

目前,X# Runtime 是根据 .Net Framework 4.6 编译的。

X# 运行时中的程序集

 

如果您想知道某个函数或类型是在哪个程序集中定义的,那么您的 "好朋友" 就是文档。我们使用一个工具从程序集来生成文档,因此文档总是正确的。

 
某些子系统在 XSharp.Core DLL 和 XSharp.VO.DLL 中也有函数。

 

组件

描述

适用方言

Framework 版本

XSharp.Core.DLL

这是 X# 运行时的基础 DLL。

X# Core

4.6

XSharp.Data.DLL

该 DLL 包含支持基于 .Net SQL 的数据访问和基于 SQL 的游标的代码。

X# Core

4.6

XSharp.RT.DLL

除 Core 外,所有方言都需要使用该 DLL。

X# non - core

4.6

XSharp.RT.Debugger.DLL

该 DLL 包含运行时调试器的功能和窗口。

X# core

4.6

XSharp.VO.DLL

该 DLL 为运行时添加 VO 和 Vulcan 方言所需的功能。

X# VO 和 X# Vulcan

4.6

XSharp.XPP.DLL

该 DLL 为运行时添加 Xbase++ 方言所需的功能。

X# XPP

4.6

XSharp.VFP.DLL

该 DLL 为运行时添加 FoxPro 方言所需的功能。

X# FoxPro

4.6

XSharp.Macrocompiler.DLL

该 DLL 是 X# 的 "快速" 宏编译器。

X# Core

4.6

XSharp.MacroCompiler.Full.DLL

该 DLL 是 X# 的 "完整" 宏编译器。

X# Core

4.6

XSharp.RDD.DLL

该 DLL 包含为 X# 实现的各种 RDD。

X# Core

4.6

VO SDK Class libs:
VOConsoleClasses.dll

VOGUIClasses.dll

VOInternetClasses.dll

VORDDClasses.dll

VOReportClasses.dll

VOSQLClasses.dll

VOSystemClasses.dll

VOWin32APILibrary.dll

这些 DLL 表示 Visual Objects 的类库。

X# VO 和 X# Vulcan

4.6

缺少或不完整的功能

 

特性

描述

预计时间

某些运行时功能尚不支持:
Crypt 函数 (Crypt(), CryptA())
Encoding 函数 (B64Enc.., UUEnc.., GetChunkBase64 等)
 

这些函数很可能会在下一个测试版中加入。目前,当您使用这些函数时,它们将抛出一个未实现异常。