在本章中,我们将向您概述我们所做的设计决定、运行时的外观、在哪里可以找到哪些类型和函数等。
我们还将在此列出尚未支持的功能。
在设计 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 编译的。
如果您想知道某个函数或类型是在哪个程序集中定义的,那么您的 "好朋友" 就是文档。我们使用一个工具从程序集来生成文档,因此文档总是正确的。
某些子系统在 XSharp.Core DLL 和 XSharp.VO.DLL 中也有函数。
组件 |
描述 |
适用方言 |
Framework 版本 |
---|---|---|---|
这是 X# 运行时的基础 DLL。 |
X# Core |
4.6 |
|
该 DLL 包含支持基于 .Net SQL 的数据访问和基于 SQL 的游标的代码。 |
X# Core |
4.6 |
|
除 Core 外,所有方言都需要使用该 DLL。 |
X# non - core |
4.6 |
|
该 DLL 包含运行时调试器的功能和窗口。 |
X# core |
4.6 |
|
该 DLL 为运行时添加 VO 和 Vulcan 方言所需的功能。 |
X# VO 和 X# Vulcan |
4.6 |
|
该 DLL 为运行时添加 Xbase++ 方言所需的功能。 |
X# XPP |
4.6 |
|
该 DLL 为运行时添加 FoxPro 方言所需的功能。 |
X# FoxPro |
4.6 |
|
该 DLL 是 X# 的 "快速" 宏编译器。 |
X# Core |
4.6 |
|
该 DLL 是 X# 的 "完整" 宏编译器。 |
X# Core |
4.6 |
|
该 DLL 包含为 X# 实现的各种 RDD。 |
X# Core |
4.6 |
|
VO SDK Class libs: VOGUIClasses.dll VOInternetClasses.dll VORDDClasses.dll VOReportClasses.dll VOSQLClasses.dll VOSystemClasses.dll VOWin32APILibrary.dll |
这些 DLL 表示 Visual Objects 的类库。 |
X# VO 和 X# Vulcan |
4.6 |
特性 |
描述 |
预计时间 |
---|---|---|
某些运行时功能尚不支持: |
这些函数很可能会在下一个测试版中加入。目前,当您使用这些函数时,它们将抛出一个未实现异常。 |