From 581350462486a34f71790e04baa4e18d4975a022 Mon Sep 17 00:00:00 2001 From: ninemine <106434473+NINEMINEsigma@users.noreply.github.com> Date: Sun, 29 Jun 2025 17:42:49 +0800 Subject: [PATCH] =?UTF-8?q?BS=200.1.0=20=E5=AE=8C=E6=88=90=E7=AC=AC?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Convention/[Runtime]/Architecture.md | 107 ++++++++++++++++++++++ Convention/[Runtime]/Config.md | 44 +-------- Convention/[Runtime]/EasySave.md | 111 +++++++++++++++++++++++ Convention/[Runtime]/File.md | 88 ++++++++++++++++++ Convention/[Runtime]/GlobalConfig.md | 88 ++++++++++++++++++ Convention/[Runtime]/Internal.md | 45 --------- Convention/[Runtime]/Math.md | 7 ++ Convention/[Runtime]/Plugins.md | 7 ++ Convention/[Runtime]/Runtime-README.md | 28 ++++++ Convention/[Runtime]/Web.md | 121 +++++++++++++++++++++++++ RootEnv-README.md | 5 + 11 files changed, 566 insertions(+), 85 deletions(-) create mode 100644 Convention/[Runtime]/EasySave.md create mode 100644 Convention/[Runtime]/File.md create mode 100644 Convention/[Runtime]/GlobalConfig.md delete mode 100644 Convention/[Runtime]/Internal.md create mode 100644 Convention/[Runtime]/Math.md create mode 100644 Convention/[Runtime]/Plugins.md create mode 100644 Convention/[Runtime]/Web.md diff --git a/Convention/[Runtime]/Architecture.md b/Convention/[Runtime]/Architecture.md index e69de29..a44f890 100644 --- a/Convention/[Runtime]/Architecture.md +++ b/Convention/[Runtime]/Architecture.md @@ -0,0 +1,107 @@ +[返回](./Runtime-README.md) + +# /Convention/Runtime/Architecture + +--- + +核心架构模块,提供依赖注入、事件系统和时间线管理功能 + +## 接口定义 + +系统定义了以下核心接口来规范架构设计: + +### ISignal +信号接口,用于事件系统的消息传递 + +### IModel +模型接口,定义数据模型的序列化和反序列化能力: +- `Save()` 保存数据到字符串 +- `Load(string data)` 从字符串加载数据 + +### IConvertable +转换接口,提供类型转换能力: +- `ConvertTo()` 转换为目标类型 + +### IConvertModel +组合接口,同时继承 `IModel` 和 `IConvertable` + +## 核心类型 + +### SingletonModel +泛型单例模型,提供类型安全的单例管理: +- 支持依赖注入和实例替换 +- 提供隐式转换操作符 +- 集成模型序列化功能 + +### DependenceModel +依赖模型,管理多个条件的组合验证: +- 支持多个 `IConvertModel` 的依赖关系 +- 提供枚举接口遍历所有依赖 +- 所有依赖条件均满足时返回true + +## 注册系统 + +### 对象注册 +- `Register(Type slot, object target, Action completer, params Type[] dependences)` +- `Register(T target, Action completer, params Type[] dependences)` + +提供基于类型的依赖注入容器: +- 支持依赖关系管理 +- 支持注册完成回调 +- 自动解析依赖顺序 + +### 注册查询 +- `Contains(Type type)` / `Contains()` +- `Get(Type type)` / `Get()` + +## 事件系统 + +### 消息监听 +- `AddListener(Type slot, Action listener)` +- `SendMessage(Type slot, ISignal signal)` +- `SendMessage(Signal signal)` + +提供类型安全的事件分发机制: +- 支持按类型注册监听器 +- 支持泛型消息类型 +- 自动管理监听器生命周期 + +### Listening类 +监听器管理类,提供: +- `StopListening()` 停止监听 + +## 时间线系统 + +### 时间线管理 +- `CreateTimeline()` 创建新的时间线 +- `AddStep(int timelineId, Func predicate, params Action[] actions)` 添加步骤 +- `UpdateTimeline()` 更新所有时间线 +- `ResetTimelineContext(int timelineId)` 重置时间线上下文 + +提供基于条件的任务调度: +- 支持多条时间线并行执行 +- 基于谓词的条件触发 +- 支持动态添加执行步骤 + +## 类型格式化 + +### 类型序列化 +- `FormatType(Type type)` 格式化类型为字符串 +- `LoadFromFormat(string data)` 从字符串加载类型 +- `LoadFromFormat(string data, out Exception exception)` 安全加载类型 + +使用格式:`Assembly::FullTypeName` + +## 内部管理 + +### 系统重置 +- `InternalReset()` 重置所有内部状态 + +清理以下组件: +- 注册历史 +- 未完成的目标 +- 完成器回调 +- 依赖关系 +- 子对象容器 +- 事件监听器 +- 时间线队列 diff --git a/Convention/[Runtime]/Config.md b/Convention/[Runtime]/Config.md index 24cb4f4..8a2c2ca 100644 --- a/Convention/[Runtime]/Config.md +++ b/Convention/[Runtime]/Config.md @@ -1,4 +1,4 @@ -[返回](./Runtime-READNE.md) +[返回](./Runtime-README.md) # /Convention/Runtime/Config @@ -20,17 +20,9 @@ ## PlatformIndicator包含的内容 - `IsRelease` Debug/Release状态 -- 平台判断 - - `IsPlatformWindows` - - `IsPlatformLinux` - - `IsPlatformUnix` - - `IsPlatformApple` - - `IsPlatformAndroid` - - `IsPlatformPosix` -- 平台架构判断 - - `IsPlatformx64` +- `IsPlatform` 平台判断 +- `IsPlatformX64`平台架构判断 - 编译器/解释器判断 如`IsMSVC`等 -- `KeyboardInput` 获取非阻塞输入 - `ApplicationPath` 获取当前应用程序目录 - `StreamingAssetsPath` 获取StreamingAssets目录 - `PersistentPath` 获取持久化目录 @@ -48,38 +40,10 @@ 用于对齐不同语言间基本实现的颗粒度, 如以下内容 -- 程序标记语言 - - 函数形参 - - `In` 预状态必须有效 - - `Out` 后状态必须有效 - - `InOpt` 若不为空则预状态必须有效 - - `OutOpt` 若不为空则后状态必须有效 - - `Read(s)` 以其为首能够读取s指定的元素数量 - - `ReadByte(s)` 以其为首能够读取s指定的字节数量 - - `Write(s)` 以其为首能够写入s指定的元素数量 - - `WriteByte(s)` 以其为首能够写入s指定的字节数量 - - `FormatString` 作为格式字符串 - - 函数返回值 - - `Success(exp)` 表达式为真时函数成功 - - `CheckReturn` 调用方应检查返回值 - - 函数 - - `AcquiresLock(exp)` 会将exp命名的锁对象加锁 - - `ReleaseLock(exp)` 会将exp命名的锁对象解锁 - - `Param(n)` 获取由n指定的顺序已命名形参的名称 - - 结构字段 - - `FieldSize(s)` 具有由s指定的可写大小数量元素 - - `FieldSizeByte(s)` 具有由s指定的可写大小数量字节 - - 结构 - - `StructSizeByte(s)` 该结构的有效对象具有s指定的字节数量 - - 通用 - - `When系列` 检定并控制标记是否生效或函数是否成功 - - `Range系列` 指定数量级或输入区间 - - `Current` 当前标记中的对象的同义词 - - 类型转换 - 字符串操作 - Construct/Destruct 重构造/析构 - 命令行解析 - 简单的反射内容 - 元类型 -- ... +- 等等... diff --git a/Convention/[Runtime]/EasySave.md b/Convention/[Runtime]/EasySave.md new file mode 100644 index 0000000..b934851 --- /dev/null +++ b/Convention/[Runtime]/EasySave.md @@ -0,0 +1,111 @@ +[返回](./Runtime-README.md) + +# /Convention/Runtime/EasySave + +--- + +完整的序列化和数据持久化系统,提供易用的数据存储和读取功能 + +## 核心特性 + +### 支持的数据格式 +- **EasySave - JSON** 支持多态的json格式 +- **Binary** 紧凑的二进制格式 + +## EasySave主类 + +### 基本保存操作 + +#### 泛型保存 +- `Save(string key, T value)` 保存到默认文件 +- `Save(string key, T value, string filePath)` 保存到指定文件 +- `Save(string key, T value, EasySaveSettings settings)` 使用自定义设置 + +#### 原始数据保存 +- `SaveRaw(byte[] bytes)` / `SaveRaw(string str)` 保存原始数据 +- `AppendRaw(byte[] bytes)` / `AppendRaw(string str)` 追加原始数据 + +### 基本加载操作 + +#### 泛型加载 +- `Load(string key)` 从默认文件加载 +- `Load(string key, string filePath)` 从指定文件加载 +- `Load(string key, T defaultValue)` 带默认值的安全加载 + +#### 原始数据加载 +- `LoadRawBytes()` / `LoadRawString()` 加载原始数据 +- `LoadString(string key, string defaultValue)` 加载字符串 + +#### 加载到现有对象 +- `LoadInto(string key, T obj)` 将数据加载到现有对象 +- `LoadInto(string key, string filePath, object obj)` 从指定文件加载到对象 + +### 序列化操作 + +#### 内存序列化 +- `Serialize(T value, EasySaveSettings settings = null)` 序列化为字节数组 +- `Deserialize(byte[] bytes, EasySaveSettings settings = null)` 从字节数组反序列化 +- `DeserializeInto(byte[] bytes, T obj)` 反序列化到现有对象 + +### 加密和压缩 + +#### 加密操作 +- `EncryptBytes(byte[] bytes, string password = null)` 加密字节数组 +- `DecryptBytes(byte[] bytes, string password = null)` 解密字节数组 +- `EncryptString(string str, string password = null)` 加密字符串 +- `DecryptString(string str, string password = null)` 解密字符串 + +#### 压缩操作 +- `CompressBytes(byte[] bytes)` 压缩字节数组 +- `DecompressBytes(byte[] bytes)` 解压字节数组 +- `CompressString(string str)` 压缩字符串 +- `DecompressString(string str)` 解压字符串 + +### 备份系统 + +#### 备份操作 +- `CreateBackup()` / `CreateBackup(string filePath)` 创建备份 +- `RestoreBackup(string filePath)` 恢复备份 + +#### 时间戳 +- `GetTimestamp()` / `GetTimestamp(string filePath)` 获取文件时间戳 + +### 缓存系统 + +#### 缓存操作 +- `StoreCachedFile()` / `StoreCachedFile(string filePath)` 存储缓存文件 +- `CacheFile()` / `CacheFile(string filePath)` 缓存文件 + +## EasySaveSettings配置 + +### 枚举类型定义 + +#### 存储位置 +```csharp +public enum Location { File, InternalMS, Cache } +``` + +#### 目录类型 +```csharp +public enum Directory { PersistentDataPath, DataPath } +``` + +#### 加密类型 +```csharp +public enum EncryptionType { None, AES } +``` + +#### 压缩类型 +```csharp +public enum CompressionType { None, Gzip } +``` + +#### 数据格式 +```csharp +public enum Format { JSON } +``` + +#### 引用模式 +```csharp +public enum ReferenceMode { ByRef, ByValue, ByRefAndValue } +``` diff --git a/Convention/[Runtime]/File.md b/Convention/[Runtime]/File.md new file mode 100644 index 0000000..842e758 --- /dev/null +++ b/Convention/[Runtime]/File.md @@ -0,0 +1,88 @@ +[返回](./Runtime-README.md) + +# /Convention/Runtime/File + +--- + +文件操作工具模块,提供跨平台的文件和目录操作功能 + +## ToolFile类 + +### 构造与基本信息 +- `ToolFile(string path)` 从路径创建文件对象 +- `ToString()` / `GetFullPath()` 获取完整路径 +- `GetName(bool is_ignore_extension = false)` 获取文件名 +- `GetExtension()` 获取文件扩展名 + +### 路径操作 +- `ToolFile operator |(ToolFile left, string rightPath)` 路径连接操作符 +- `Open(string path)` 打开指定路径 +- `Open(FileMode mode)` 以指定模式打开文件 +- `Close()` 关闭文件流 +- `BackToParentDir()` 回到父目录 +- `GetParentDir()` 获取父目录 + +### 存在性检查 +- `Exists()` 检查文件或目录是否存在 +- `implicit operator bool` 隐式布尔转换,等同于Exists() + +### 类型判断 +- `IsDir()` 是否为目录 +- `IsFile()` 是否为文件 +- `IsFileEmpty()` 文件是否为空 + +### 文件加载 +支持多种格式的文件读取: + +#### JSON操作 +- `LoadAsRawJson()` 原始JSON反序列化 +- `LoadAsJson(string key = "data")` 使用EasySave加载JSON + +#### 文本操作 +- `LoadAsText()` 加载为文本字符串 + +#### 二进制操作 +- `LoadAsBinary()` 加载为字节数组 + +### 文件保存 +支持多种格式的文件写入: + +#### JSON保存 +- `SaveAsRawJson(T data)` 原始JSON序列化保存 +- `SaveAsJson(T data, string key)` 使用EasySave保存JSON + +#### 二进制保存 +- `SaveAsBinary(byte[] data)` 保存字节数组 +- `SaveDataAsBinary(string path, byte[] outdata, FileStream Stream = null)` 静态二进制保存 + +### 文件操作 +- `Create()` 创建文件或目录 +- `Rename(string newPath)` 重命名 +- `Move(string path)` 移动文件 +- `Copy(string path, out ToolFile copyTo)` 复制文件 +- `Delete()` / `Remove()` 删除文件或目录 +- `Refresh()` 刷新文件信息 + +### 路径管理 +- `MustExistsPath()` 确保路径存在(自动创建) +- `TryCreateParentPath()` 尝试创建父路径 + +### 目录操作 +- `DirIter()` 遍历目录获取字符串列表 +- `DirToolFileIter()` 遍历目录获取ToolFile列表 +- `DirCount()` 获取目录内项目数量 +- `DirClear()` 清空目录内容 +- `MakeFileInside(string source, bool isDeleteSource = false)` 在目录内创建文件 + +### 文件对话框(平台相关) +- `SelectMultipleFiles(string filter, string title)` 多文件选择对话框 +- `SelectFile(string filter, string title)` 单文件选择对话框 +- `SaveFile(string filter, string title)` 保存文件对话框 +- `SelectFolder(string description)` 文件夹选择对话框 + +### 文件浏览 +- `BrowseFile(params string[] extensions)` 浏览指定扩展名的文件 +- `BrowseToolFile(params string[] extensions)` 浏览并返回ToolFile对象 + +### 时间戳 +- `GetTimestamp()` 获取文件时间戳 diff --git a/Convention/[Runtime]/GlobalConfig.md b/Convention/[Runtime]/GlobalConfig.md new file mode 100644 index 0000000..f68a490 --- /dev/null +++ b/Convention/[Runtime]/GlobalConfig.md @@ -0,0 +1,88 @@ +[返回](./Runtime-README.md) + +# /Convention/Runtime/GlobalConfig + +--- + +全局配置管理模块,提供配置文件操作、日志系统和项目级配置管理 + +## GlobalConfig类 + +### 构造与初始化 +- `GlobalConfig(string dataDir, bool isTryCreateDataDir = false, bool isLoad = true)` +- `GlobalConfig(ToolFile dataDir, bool isTryCreateDataDir = false, bool isLoad = true)` + +#### 初始化流程 +1. 设置数据目录,确保目录存在 +2. 检查配置文件,不存在则生成空配置 +3. 可选自动加载现有配置 + +### 静态配置 +- `ConstConfigFile` 配置文件名(默认"config.json") +- `InitExtensionEnv()` 初始化扩展环境 +- `GenerateEmptyConfigJson(ToolFile file)` 生成空配置JSON + +### 文件管理 +- `GetConfigFile()` / `ConfigFile` 获取配置文件对象 +- `GetFile(string path, bool isMustExist = false)` 获取数据目录下的文件 +- `CreateFile(string path)` 创建文件 +- `EraseFile(string path)` 清空文件内容 +- `RemoveFile(string path)` 删除文件 + +### 配置数据操作 + +能够被`foreach`/`for`使用迭代器历遍配置内容的键值对 + +#### 数据访问 +- `operator[](string key)` 索引器访问配置项 +- `Contains(string key)` 检查键是否存在 +- `Remove(string key)` 删除配置项 +- `DataSize()` 获取配置项数量 + +#### 持久化 +- `SaveProperties()` 保存配置到文件 +- `LoadProperties()` 从文件加载配置 + +配置文件格式: +```json +{ + "properties": { + "key1": "value1", + "key2": "value2" + } +} +``` + +### 日志系统 +- `GetLogFile()` / `LogFile` 获取日志文件对象 +- `DefaultLogger` 默认日志输出器(可自定义) + +#### 日志方法 +- `Log(string messageType, string message, Action logger)` +- `Log(string messageType, string message)` 使用默认日志器 +- `LogPropertyNotFound(string message, Action logger, object @default = null)` +- `LogPropertyNotFound(string message, object @default = null)` +- `LogMessageOfPleaseCompleteConfiguration()` 记录配置提示信息 + +#### 日志格式 +``` +[time] MessageType : Message +``` + +自动调整消息类型的对齐宽度 + +### 配置查找 +- `FindItem(string key, object @default = null)` 查找配置项,支持默认值 + +## ProjectConfig类 + +继承自 `GlobalConfig`,专门用于项目级配置管理 + +### 静态配置 +- `ProjectConfigFileFocus` 项目配置目录焦点(默认"Assets/") +- `InitExtensionEnv()` 初始化项目扩展环境 +- `SetProjectConfigFileFocus(string path)` 设置项目配置焦点目录 +- `GetProjectConfigFileFocus()` 获取项目配置焦点目录 + +### 构造 +- `ProjectConfig(bool isLoad = true)` 使用默认项目目录构造 diff --git a/Convention/[Runtime]/Internal.md b/Convention/[Runtime]/Internal.md deleted file mode 100644 index bef8bdf..0000000 --- a/Convention/[Runtime]/Internal.md +++ /dev/null @@ -1,45 +0,0 @@ -[返回](./Runtime-READNE.md) - -# /Convention/Runtime/Internal - ---- - -包含了关于本框架下内置的接口 - -## Import Config - -导入[Config](Config.md) - -## TypeClass元类型 - -完全公开的对外接口 - -- 成员函数 - - - ToString 转字符串类型 - - ```cpp - string ToString() const - ``` - - - SymbolName 获取类型符号 - - ```cpp - string SymbolName() const noexcept - ``` - - - GetType() 获取类型 - - ```cpp - Type GetType() const noexcept - ``` - - - As() 安全的类型转换 - - ```cpp - template - [[ReturnMaynull]] - conditional_t,Ty,Ty*> As() - [[ReturnMaynull]] TypeClass* As(const type_info&) - ``` - diff --git a/Convention/[Runtime]/Math.md b/Convention/[Runtime]/Math.md new file mode 100644 index 0000000..afa2738 --- /dev/null +++ b/Convention/[Runtime]/Math.md @@ -0,0 +1,7 @@ +[返回](./Runtime-README.md) + +# /Convention/Runtime/Math + +--- + +数学工具模块,提供常用数学计算功能 diff --git a/Convention/[Runtime]/Plugins.md b/Convention/[Runtime]/Plugins.md new file mode 100644 index 0000000..fbdbcd8 --- /dev/null +++ b/Convention/[Runtime]/Plugins.md @@ -0,0 +1,7 @@ +[返回](./Runtime-README.md) + +# /Convention/Runtime/Plugins + +--- + +插件系统模块,提供扩展机制和平台特定功能 diff --git a/Convention/[Runtime]/Runtime-README.md b/Convention/[Runtime]/Runtime-README.md index 29bd747..dac083b 100644 --- a/Convention/[Runtime]/Runtime-README.md +++ b/Convention/[Runtime]/Runtime-README.md @@ -12,4 +12,32 @@ 检查并尝试引入所有依赖库, 定义PlatformIndicator与一些基础内容 +- [Architecture*](Architecture.md) + +核心架构模块,包含依赖注入、事件系统和架构抽象 + +- [File*](File.md) + +文件操作工具模块,提供跨平台的文件和目录操作 + +- [GlobalConfig*](GlobalConfig.md) + +全局配置管理模块,提供配置文件操作和日志系统 + +- [Web](Web.md) + +网络工具模块,提供HTTP客户端和URL操作功能 + +- [Math*](Math.md) + +数学工具模块,提供常用数学计算功能 + +- [Plugins*](Plugins.md) + +插件系统模块,提供扩展机制和平台特定功能 + +- [EasySave](EasySave.md) + +完整的序列化和数据持久化系统,提供易用的数据存储功能 + diff --git a/Convention/[Runtime]/Web.md b/Convention/[Runtime]/Web.md new file mode 100644 index 0000000..f682e50 --- /dev/null +++ b/Convention/[Runtime]/Web.md @@ -0,0 +1,121 @@ +[返回](./Runtime-README.md) + +# /Convention/Runtime/Web + +--- + +网络工具模块,提供HTTP客户端和URL操作功能 + +## ToolURL类 + +### 构造与基本信息 +- `ToolURL(string url)` 从URL字符串创建对象 +- `ToString()` / `GetFullURL()` / `FullURL` 获取完整URL +- `implicit operator string` 隐式字符串转换 + +### URL属性解析 +- `GetFilename()` 获取URL中的文件名 +- `GetExtension()` 获取文件扩展名 +- `ExtensionIs(params string[] extensions)` 检查扩展名是否匹配 + +### URL验证 +- `IsValid` 属性,检查URL是否有效 +- `ValidateURL()` 验证URL格式 +- `implicit operator bool` 隐式布尔转换,等同于IsValid + +支持HTTP和HTTPS协议的绝对URL + +### HTTP方法 + +#### GET请求 +- `GetAsync(Action callback)` 异步GET +- `Get(Action callback)` 同步GET + +#### POST请求 +- `PostAsync(Action callback, Dictionary formData = null)` 异步POST +- `Post(Action callback, Dictionary formData = null)` 同步POST + +支持表单数据提交 + +### 内容加载 + +#### 文本加载 +- `LoadAsTextAsync()` 异步加载为文本 +- `LoadAsText()` 同步加载为文本 + +#### 二进制加载 +- `LoadAsBinaryAsync()` 异步加载为字节数组 +- `LoadAsBinary()` 同步加载为字节数组 + +#### JSON加载 +- `LoadAsJson()` 同步加载并反序列化JSON +- `LoadAsJsonAsync()` 异步加载并反序列化JSON + +### 文件保存 +- `Save(string localPath = null)` 自动选择格式保存到本地 +- `SaveAsText(string localPath = null)` 保存为文本文件 +- `SaveAsJson(string localPath = null)` 保存为JSON文件 +- `SaveAsBinary(string localPath = null)` 保存为二进制文件 + +### 文件类型判断 +- `IsText` 是否为文本文件(txt, html, htm, css, js, xml, csv) +- `IsJson` 是否为JSON文件 +- `IsImage` 是否为图像文件(jpg, jpeg, png, gif, bmp, svg) +- `IsDocument` 是否为文档文件(pdf, doc, docx, xls, xlsx, ppt, pptx) + +### 高级操作 +- `Open(string url)` 在当前对象上打开新URL +- `DownloadAsync(string localPath = null)` 异步下载文件 +- `Download(string localPath = null)` 同步下载文件 + +## 设计特点 + +### 统一的HTTP客户端 +使用静态 `HttpClient` 实例,避免连接池耗尽 + +### 自动内容类型检测 +基于文件扩展名自动判断内容类型,优化保存和处理策略 + +### 异步支持 +所有网络操作都提供异步和同步两种版本 + +### 错误处理 +网络请求失败时回调函数接收null参数,方法返回false + +### 文件管理集成 +下载的文件自动转换为ToolFile对象,与文件系统模块无缝集成 + +### 灵活的数据格式 +支持文本、二进制、JSON等多种数据格式的加载和保存 + +## 使用示例 + +### 基本HTTP请求 +```csharp +var url = new ToolURL("https://api.example.com/data"); +if (url.IsValid) +{ + url.Get(response => { + if (response != null && response.IsSuccessStatusCode) + { + // 处理响应 + } + }); +} +``` + +### 文件下载 +```csharp +var url = new ToolURL("https://example.com/file.json"); +var localFile = url.Download("./downloads/file.json"); +if (localFile.Exists()) +{ + var data = localFile.LoadAsJson(); +} +``` + +### 类型安全的JSON加载 +```csharp +var url = new ToolURL("https://api.example.com/users.json"); +var users = url.LoadAsJson>(); +``` \ No newline at end of file diff --git a/RootEnv-README.md b/RootEnv-README.md index 8e69a99..a0794bf 100644 --- a/RootEnv-README.md +++ b/RootEnv-README.md @@ -14,4 +14,9 @@ 基础标准`BS`, 增强提案`EP` +- `0.1.0` `BS` Runtime标准 + - Config 内置功能与配置 + - File 面向对象的文件系统 + - Architecture 架构 + - `0.0.1` `BS` 建立标准 \ No newline at end of file